WPF性能调试系列 – 内存监测
WPF性能调试系列文章:
WPF页面渲染优化:Application Timeline
WPF页面业务加载优化:Ants Performance 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来释放。
WPF性能调试系列 – 内存监测的更多相关文章
- WPF性能调试系列 – Ants Performance Profiler
WPF性能调试系列文章: WPF页面渲染优化:Application Timeline WPF页面业务加载优化:Ants Performance Profiler WPF内存优化:Ants Memor ...
- WPF性能调试系列 – 应用程序时间线
WPF性能调试系列文章: WPF页面渲染优化:Application Timeline WPF页面业务加载优化:Ants Performance Profiler WPF内存优化:Ants Memor ...
- [Android 性能优化系列]内存之基础篇--Android怎样管理内存
大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地 ...
- [Android 性能优化系列]内存之提升篇--应用应该怎样管理内存
大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地 ...
- JVM堆内存监测的一种方式,性能调优依旧任重道远
上月,由极客邦.InfoQ和听云联合主办2016 APMCon中国应用性能管理大会圆满落下帷幕.会上,Java冠军Martijn Verburg进行了一场Java and the Machine的分享 ...
- Android性能优化系列---管理你的app内存
文章出处:http://developer.android.com/training/articles/memory.html#YourApp Random-access memory(RAM)在任 ...
- Android应用性能优化系列视图篇——隐藏在资源图片中的内存杀手
图片加载性能优化永远是Android领域中一个无法绕过的话题,经过数年的发展,涌现了很多成熟的图片加载开源库,比如Fresco.Picasso.UIL等等,使得图片加载不再是一个头疼的问题,并且大幅降 ...
- Visual Studio 调试系列7 查看变量占用的内存(使用内存窗口)
系列目录 [已更新最新开发文章,点击查看详细] 在调试期间,“内存”窗口显示应用程序正在使用的内存空间. 调试器窗口(如监视窗口.自动窗口.局部变量窗口和快速监视对话框)显示变量,这些变量存储 ...
- JVM性能优化系列-(1) Java内存区域
1. Java内存区域 1.1 运行时数据区 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.主要包括:程序计数器.虚拟机栈.本地方法栈.Java堆.方法区(运 ...
随机推荐
- 关于node.js的模块查找顺序(require.resolve())
前几天社团群里有人问了阿里秋季前端笔试的一道题,想起来以前在官方文档看到过查找模块的算法,干脆自己写一写…… 官方的require.resolve实现在这里. 因为我只是想看看查找过程,所以就直接把会 ...
- 趣味js【练习题】
1.无限极函数递归,使每次的参数相乘 需求:add(1)(2)(3)(4)(5) 1.1首先要知道一个东西,就是function每次调用,都会默认执行tosting 1.2利用递归,每次返回的都是函数 ...
- java总结(一)(变量类型)
java代码运行原理 需要注意 公共类类名必须和文件名相同 一个文件可以有好几个类,编译生成n个类文件名 chcp 65001----utf8 936----GBK 437----美国英语 文档注释必 ...
- 关于latex的画图
可以使用latex画一些简单的图 可以参考这个链接:http://www.latexstudio.net/archives/9400(PGFPlots绘图简易教程[转载])
- 洛谷P4151 [WC2011] 最大XOR和路径 [线性基,DFS]
题目传送门 最大XOR和路径 格式难调,题面就不放了. 分析: 一道需要深刻理解线性基的题目. 好久没打过线性基的题了,一开始看到这题还是有点蒙逼的,想了几种方法全被否定了.还是看了大佬的题解才会做的 ...
- vue v-model 简单使用
最近在写组件时,考虑到子组件的状态需要实时反馈给父组件,于是想起来了v-model,下面介绍一下自定义组件中的简单使用 官网介绍不是很清晰,这个默认的input事件很容易让人产生误解,其实个人建议还是 ...
- export导出.xls时,在火狐的情况下出现表名乱码的情况的解决方案
response.setContentType("application/octet-stream; charset=utf-8");fileName = exportDataDt ...
- Redis学习篇(八)之连接相关
PING 测试客户端和服务器之间的连接是否有效,有效返回PONG ECHO 打印特定的信息, 如: ECHO 'HELLO WORLD' QUIT/EXIT 断开当前客户端与服务器之间的连接,可以重连 ...
- 【HDU 6021】 MG loves string (枚举+容斥原理)
MG loves string Accepts: 30 Submissions: 67 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- luoguP3830 [SHOI2012]随机树 期望概率 + 动态规划 + 结论
题意非常的复杂,考虑转化一下: 每次选择一个叶节点,删除本叶节点(深度为$dep$)的同时,加入两个深度为$dep + 1$的叶节点,重复$n$轮 首先考虑第$1$问,(你看我这种人相信数据绝对是最大 ...