内存监测2

Posted 遗失的似曾相识

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存监测2相关的知识,希望对你有一定的参考价值。

分析工具:Ants Memory Profiler

内存监测(Ants Memory Profiler)

    Ants Memory Profiler是专门针对于.net程序的内存动态分析工具,通过实时监测WPF程序中每个对象分配的内存空间大小,来提供多样式报告展示内存的使用情况。我们可根据分析结果进行指定对象的优化。

    从RedGate官网下载,下载地址为http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/

 

模拟分析应用程序

打开Ants Memory Profiler,通过菜单File -> New Profiling Session...(Ctrl+N)打开新的监测会话,在可监测程序类型中选择.Net executable。

 

 

开始执行后,wpf应用会打开执行,操作应用并实时监测内存使用情况,对于内存使用较高地方进行Take Memory Snapshot:

 

注:一次内存分析可进行多次内存点拍照。比如程序刚运行进行拍照,运行一段时间之后再次拍照,这样可通过对比两次拍照的内存差别分析出对象占用内存情况,更便于分析问题。

 

一个拍照监测点结果分析:

 

可参考具体详解:https://documentation.red-gate.com/display/AMP8/The+summary+page

注:1. 托管对象如果内存使用过高,考虑是否缓存数据过大,托管资源一般无需过多考虑,可等待.net垃圾回收器进行自行回收。

   2. 非托管资源如果占用内存过高,需要进行手动释放,因为费托管资源是无法自动被.net垃圾回收器回收 – 非托管资源包括:GUI+,图片操作,文件操作,win32调用等

 

多个拍照监测点结果对比分析:

 

 

具体类视图分析:

 

可参考具体详解:https://documentation.red-gate.com/display/AMP8/The+class+list

 

具体对象分析:

 

可参考具体详解:https://documentation.red-gate.com/display/AMP8/The+instance+list

 

内存泄露主要原因分析:静态引用、未注销的事件绑定、非托管代码资源使用等。对于静态对象尽量小或者不用,非托管资源可通过手动Dispose来释放。

以上是关于内存监测2的主要内容,如果未能解决你的问题,请参考以下文章

内存泄露监测工具

Windows 下都有哪些内存泄露监测工具

Linux性能监测:内存篇

Android应用性能测试之CPU和内存实时监测

LeakCanary 内存泄露监测原理研究

LeakCanary 内存泄漏 监测 性能优化 简介 原理