当前位置: 首页 > 编程语言 > C#

在运行时轮询C#应用程序的内存使用情况?分享

时间:2023-04-11 11:56:04 C#

轮询C#应用运行时的内存使用情况?我有一个应用程序,在运行时需要自行轮询内存使用情况。如果它能列出每个实例化的对象的内存使用情况,那就太理想了。我知道这可以通过WMI实现,但我希望有一些不依赖于WMI的东西。您可能会发现两个有用的函数:GC.GetTotalMemory();Process.PagedMemorySize64();我的经验是GC.GetTotalMemory()不是很可靠。它通常报告的内存使用量比实际内存使用量少得多。我看到它报告说当我的程序在16GB的机器上耗尽时,我只使用了8GB。我还没有测试Process.PagedMemorySize64,尽管它看起来很有希望。进程proc=Process.GetCurrentProcess();Logger.Info(proc.PeakWorkingSet64/1024+"kb");你可以听perfmon计数器,它会给你很多数据(GC活动/物理内存使用/托管堆等......)如果你需要更深入,你可能需要给自己附加一个调试器,这真的很棘手,因为您必须生成一个新进程并与之通信,然后遍历您的记忆。您可以从System.Diagnostics(进程类)中获得有关进程的粗粒度信息。http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx。没有“每个对象”的东西,但至少可以收集到一些关于你的进程的内存信息。以上或许就是C#学习教程:PollingthememoryusageofaC#appatruntime?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——Windows::System::Diagnostics::ProcessDiagnosticInfo::GetForCurrentProcess();本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: