diff --git a/src/NadekoBot/Modules/Utility/Utility.cs b/src/NadekoBot/Modules/Utility/Utility.cs index 04e019271..859a1cc62 100644 --- a/src/NadekoBot/Modules/Utility/Utility.cs +++ b/src/NadekoBot/Modules/Utility/Utility.cs @@ -253,7 +253,7 @@ namespace NadekoBot.Modules.Utility .AddField(GetText(strs.commands_ran), _stats.CommandsRan.ToString(), true) .AddField(GetText(strs.messages), $"{_stats.MessageCounter} ({_stats.MessagesPerSecond:F2}/sec)", true) - .AddField(GetText(strs.memory), FormattableString.Invariant($"{_stats.PrivateMemory:F2} MB"), true) + .AddField(GetText(strs.memory), FormattableString.Invariant($"{_stats.GetPrivateMemory():F2} MB"), true) .AddField(GetText(strs.owner_ids), ownerIds, true) .AddField(GetText(strs.uptime), _stats.GetUptimeString("\n"), true) .AddField(GetText(strs.presence), diff --git a/src/NadekoBot/Services/IStatsService.cs b/src/NadekoBot/Services/IStatsService.cs index efc409f18..8f3ec3464 100644 --- a/src/NadekoBot/Services/IStatsService.cs +++ b/src/NadekoBot/Services/IStatsService.cs @@ -14,11 +14,6 @@ namespace NadekoBot.Services /// long CommandsRan { get; } - /// - /// The total amount of private memory used by the bot, in Megabytes. - /// - double PrivateMemory { get; } - /// /// The Discord framework used by the bot. /// @@ -54,5 +49,10 @@ namespace NadekoBot.Services /// /// The formatting separator. string GetUptimeString(string separator = ", "); + + /// + /// Gets total amount of private memory currently in use by the bot, in Megabytes. + /// + double GetPrivateMemory(); } } diff --git a/src/NadekoBot/Services/Impl/StatsService.cs b/src/NadekoBot/Services/Impl/StatsService.cs index d19d23ea2..0102f759d 100644 --- a/src/NadekoBot/Services/Impl/StatsService.cs +++ b/src/NadekoBot/Services/Impl/StatsService.cs @@ -13,7 +13,7 @@ using System.Threading.Tasks; namespace NadekoBot.Services { - public class StatsService : IStatsService, IReadyExecutor, INService + public class StatsService : IStatsService, IReadyExecutor, INService, IDisposable { private readonly Process _currentProcess = Process.GetCurrentProcess(); private readonly DiscordSocketClient _client; @@ -23,8 +23,6 @@ namespace NadekoBot.Services public const string BotVersion = "3.0.7"; public string Author => "Kwoth#2452"; public string Library => "Discord.Net"; - - public double PrivateMemory => _currentProcess.PrivateMemorySize64 / (double)1.MiB(); public double MessagesPerSecond => MessageCounter / GetUptime().TotalSeconds; private long _textChannels; @@ -173,5 +171,17 @@ namespace NadekoBot.Services _voiceChannels = guilds.Sum(g => g.Channels.Count(cx => cx is IVoiceChannel)); return Task.CompletedTask; } + + public double GetPrivateMemory() + { + _currentProcess.Refresh(); + return _currentProcess.PrivateMemorySize64 / (double)1.MiB(); + } + + public void Dispose() + { + _currentProcess.Dispose(); + GC.SuppressFinalize(this); + } } }