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堆.方法区(运 ...
随机推荐
- “全排列”问题系列(一)[LeetCode] - 用交换元素法生成全排列及其应用,例题: Permutations I 和 II, N-Queens I 和 II,数独问题
转:http://www.cnblogs.com/felixfang/p/3705754.html 一.开篇 Permutation,排列问题.这篇博文以几道LeetCode的题目和引用剑指offer ...
- MVC – 9.mvc整体请求流程
1.请求管道 2~5微软自己的验证,我们一般不用. 在全局配置文件中-已经配置一个路由过滤器-为第7个事件注册了路由方法 1.在application_start中向静态路由表注册了路由数据,在管道第 ...
- 如何关闭WordPress后台的主题、插件、版本更新通知?
由于WordPress 更新速度非常快,不论是主题 插件或是版本,每个月少说要执行个好几次,因为更新快,所以WordPress后台加入了更新通知,提醒使用者有新版本了,可以进行插件.主题或是系统更新, ...
- 【PAT】1001. 害死人不偿命的(3n+1)猜想 (15)
1001. 害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去, ...
- [实战]MVC5+EF6+MySql企业网盘实战(5)——页面模板
写在前面 上篇文章更新了网盘的登录界面,以及用户头像的等比例压缩功能.今天折腾一下页面的样式,将从网上找的一个模板套用在项目中. 系列文章 [EF]vs15+ef6+mysql code first方 ...
- 获取对象的key【键】和分别获取数组的key【键】和值
一.先说对象,如何获取key[键]: var obj={ name:"websong", qq:289483936 } 想要获取这个obj对象的键“name”和"qq&q ...
- LoadRunner项目结合抓包工具
LoadRunner项目结合抓包工具 常见的抓包工具包括: 1. Http协议 报文分为"请求","应答"两大类. 请求: 方法-URL-协议/版本 ...
- 转:linux关闭防火墙iptables
ref:https://jingyan.baidu.com/article/066074d64f433ec3c21cb000.html Linux系统下面自带了防火墙iptables,iptables ...
- JAVA编程思想读书笔记(一)--面向对象
第二章 一切都是对象 No1: 程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据: (1) 寄存器.这是最快的保存区域,因为它位于和其他所有保存 ...
- javascript 中关于function中的prototype
在javascrpit中每个函数中都有一个prototype属性,在其创建的时候,无论是用var method = function(){}或者 var method = new Function() ...