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);
+ }
}
}