我有一个包含不同组件的应用程序,例如 Windows Media Player
、Image box
等。所有组件都在回放
或一个接一个
。一个以 Panel
作为父级的用户 Controller 包含 5 个 Grids
,一个 Grid
是 4 个 Labels
的组合。同一个用户 Controller 的形式有 2 个带有视频和图像的实例。
因此,我的应用程序每秒都会将其提交的内存大小增加 2MB。一段时间后,我的应用程序因内存不足而停止。所以我想看看内存泄漏在哪个部分或组件中。
是否有任何免费软件可以监控内存泄漏?
最佳答案
要监视 .NEE 中是否存在内存泄漏,您可以使用 Windows 性能监视器。来自这篇文章:Identify And Prevent Memory Leaks In Managed Code :
使用 PerfMon 检查应用程序的以下性能计数器:进程/专用字节数、.NET CLR 内存/所有堆中的字节数和 .NET CLR LocksAndThreads/当前逻辑线程数。 Process/Private Bytes 计数器报告专为进程分配且不能与系统上的其他进程共享的所有内存。 .NET CLR Memory/# Bytes in All Heaps 计数器报告 Gen0、Gen1、Gen2 和大型对象堆的组合总大小。 .NET CLR LocksAndThreads/# of current logical Threads 计数器报告 AppDomain 中的逻辑线程数。如果应用程序的逻辑线程数意外增加,线程堆栈就会泄漏。如果 Private Bytes 增加,但 #Bytes in All Heaps 保持稳定,则非托管内存正在泄漏。如果两个计数器都在增加,则托管堆中的内存正在增加。
另一个跟踪下载内存泄漏的工具是:DebugDiag .它非常有效,而且免费。
关于c# - 有什么方法可以查看 C# 应用程序的泄漏内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22911884/