如何查看非托管内存使用情况?
在Visual Studio中如何在ac#项目中查看和监视非托管内存使用情况? 有没有办法在调试后检查分配的内存是否被正确删除?
代码:pv_Memory = Marshal.AllocHGlobal(0x200000);
我试图在Visual Studio 2015中使用“诊断工具”,并且可以看到内存在增加,尽管它似乎没有分离出非托管对象和内存。
有小费吗? 谢谢。
配置:1. Visual Studio 2015 2.引用第三方.NET库的C#应用程序,它是非托管库的包装3. Windows 7
当您使用AllocHGlobal时,您正在从非托管C / C ++堆分配。 您可以使用堆分配跟踪来跟踪它。
class Program
{
private static IntPtr pv_Memory;
static void Main(string[] args)
{
Console.ReadLine();
for(int i=0;i<10;i++)
{
pv_Memory = Marshal.AllocHGlobal(0x200000);
}
Console.WriteLine("Hello World!");
Console.ReadLine();
}
}
Windows Performance Toolkit中的xperf允许您附加到已经运行的进程以获取堆分配数据。
您可以使用WPA查看数据。 好文章在这里:http://blogs.microsoft.co.il/sasha/2014/12/02/diagnosing-native-memory-leaks-etw-wpa/
这是相当强大的,但它需要一些练习。
使用MS内置工具CLRProfiler和Perfmon(性能监视器)。 你可以在互联网上获得它的文档,看看这个链接。 检查ILDASM(IL反汇编程序)工具。
链接地址: http://www.djcxy.com/p/57047.html上一篇: How can unmanaged memory usage be viewed?
下一篇: c++