.NET Memory Profiler 查看内存使用情况
1 简介
.Net Memory Profiler(以下简称Profiler):专门针对于.NET程序,功能最全的内存分析工具,最大的特点是具有内存动态分析(Automatic Memory Analysis)功能。
2 安装
http://memprofiler.com/download.aspx
下载好后 直接下一步下一步
3 使用方法
支持7种类型.NET程序

- 启动跟踪(Profiler Application)
选定对应的调试方式,如调试桌面程序,选中Profiler Application,然后选择需要启动的执行文件,Profiler将作为宿主程序启动程序开始实时监控内存.
- 附加进程(Attach Process)
将Profiler附加到指定的进程上,此时不能实时监控内存情况,只能够收集内存镜像.
- 导入内存镜像(Import Memory Dump)
可以选择dmp为后缀的内存镜像文件,比如Windbg以及DebugDiag导出的镜像文件,此时不能实时监控内存情况,只能够收集内存镜像且不能跟踪非托管资源.
4 软件设置
为了加快Profiler分析内存类型实例的速度,需要设置程序的符号路径即(Symbol File Locations),进入菜单Tool->Options->Preferences->Symobl File Locations,得到弹出菜单如下图.

5 操作
首先,选择需要调试类型,选择 Profiler Application,选择好需要启动的程序exe文件.

选择级别

程序代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Couchbase;
using Couchbase.Configuration;
using Enyim.Caching.Memcached; namespace CentaNet.CouchbaseTest
{
class Program
{
static void Main(string[] args)
{
int n = ;
while (true)
{
Console.WriteLine("=============第{0}次================", ++n); string Bucket = System.Configuration.ConfigurationManager.AppSettings["bucket"];
string BucketPassword = Bucket;
var key = "cottrell_brewing-old_yankee_ale" + DateTime.Now.ToString();
Test(Bucket, BucketPassword, "http://10.4.18.13:8091/pools/default", key);
Console.Write("\n");
}
} static void Test(string Bucket, string BucketPassword, string url, string key)
{
var clientConfiguration = new CouchbaseClientConfiguration();
clientConfiguration.Bucket = Bucket;
clientConfiguration.BucketPassword = BucketPassword;
clientConfiguration.Urls.Add(new Uri(url));
clientConfiguration.SocketPool.ReceiveTimeout = new TimeSpan(, , );
clientConfiguration.SocketPool.ConnectionTimeout = new TimeSpan(, , );
clientConfiguration.SocketPool.DeadTimeout = new TimeSpan(, , );
var client = new CouchbaseClient(clientConfiguration);
var result = client.Store(StoreMode.Set, key, "test"); if (result)
{
var savedBeer = client.Get(key);
Console.WriteLine(clientConfiguration.Urls[].AbsoluteUri + " " + savedBeer.ToString());
}
else
{
Console.WriteLine(clientConfiguration.Urls[].AbsoluteUri + " 失败" );
} }
}
}
执行效果如下

可以看到占用Uri资源实例是最多的
存储快照 分析原因


双击

可以看出造成URI实例原因是 couchbasepool 造成的,可以跟踪程序代码
Import Memory Dump
转存需要分析的dmp文件


需要下载SDK支持
https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit


可以看到内存的使用情况 分析溢出
推荐其他4款超实用的.NET性能分析工具
1.JetBrains dotTrace
JetBrains dotTrace是一款性能和内存分析工具,它可以帮助你优化应用程序性能指标,支持.NET 1.0版本到4.5,快速分析程序瓶颈,找出影响效率的代码。官方网站上面有10天试用版,大家可以点击下载使用。
2.ANTS Performance Profiler
ANTS性能分析器是一种用于分析.NET框架支持的用任何语言编写的应用程序的工具。ANTS性能分析器能分析所有.NET应用程序,包括ASP.NET网络应用程序、Windows服务和COM+应用程序。ANTS性能分析器能在几分钟内识别性能瓶颈,运行非常快速,且响应时,对程序的执行具有最低影响。ANTS性能分析器可用作一种独立工具,也可用作Red Gate .NET Developer Bundle的一部分。目前支持14天免费试用,大家可以去体验体验。
3.EQATEC Profiler
另一个非常好的.NET分析器,它拥有多个版本,有免费版,标准版、专业版等。不仅使用方便,而且优化速度也相当快。
4.Telerik Just Trace
Telerik Just Trace是一款帮你轻松找出内存泄漏的分析工具,并且可以轻松搞定许多性能问题。
.NET Memory Profiler 查看内存使用情况的更多相关文章
- Linux下查看内存使用情况方法总结
Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...
- linux下查看内存使用情况
基本内存术语解读 1> free -m 同样是做为缓存,buffers和cache又有啥区别呢? 于是又查了些资料,发现buffers实际应该是叫“缓冲”,其英文解释是:A buffer is ...
- 【查看内存】Linux查看内存使用情况(二)
Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...
- Linux 下查看内存使用情况方法总结
Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...
- LINUX查看内存使用情况 free
# free 显示结果如下: Mem:表示物理内存统计 total 内存总数 8057964KB used 已使用的内存 7852484KB free 空闲的内存数 205480KB shared 当 ...
- free命令查看内存使用情况(转载)
linux free命令查看内存使用情况 时间:2016-01-05 06:47:22来源:网络 导读:linux free命令查看内存使用情况,free命令输出结果的各选项的含义,以及free结果中 ...
- jmap查看内存使用情况与生成heapdump
jmap查看内存使用情况与生成heapdump 如果想分析自己的JAVA Application时,可以使用jmap程序来生成heapdump文例: jmap -heap 1234 (1234为进程 ...
- Windbg + .Net .NET Memory Profiler 排查内存泄露
这是一个Winform程序,用于项目中的定时运算.症状是,运行一段时间后,内存持续上升.如一天内就能够达到300M. 打开.Net Memory Profiler,监控该程序,一段时间后,看到该程序产 ...
- Linux查看内存使用情况
输入:top PID:进程的ID USER:进程所有 PR:进程的优先级别,越小越优先被执 NInice: VIRT:进程占用的虚拟内 RES:进程占用的物理内 SHR:进程使用的共享内 S:进程的状 ...
随机推荐
- EXEC sp_executesql
declare @sql nvarchar(max)declare @nu int set @sql='SELECT * FROM [FMTest].[dbo].[FM_Radio_Station]' ...
- css3clock.js - 一个用CSS3与纯js实现的简单时钟
前言 项目代码明细可以查看我Github上的源码:https://github.com/nelsonkuang/css3clock.js 实现思路 主要是用CSS3控制时针.分针和秒针旋转:时针每12 ...
- lamp
Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立 的程序,但是因为常被放在一起使用,拥有了越来越高的 ...
- [软件推荐、资料分享]MATLAB
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分. Matlab ...
- chm文件索引丢失和不能搜索
regsvr32 hhctrl.ocx regsvr32 itss.dll regsvr32 itircl.dll
- 我的window10
前言 这个一时半会写不完,也比较耗费时间,留着以后,每周更新一些新的技巧. 折腾了3天多时间的成果——>window10 的全新桌面,不比苹果差!不要说 windows 不能用 mac . 既然 ...
- 解决Ionic的ion-slide-box 2条数据渲染问题
当slider数据列表是动态获取时,如果数据结果只有2条数据时,slider列表会多复制俩个,通过下面的slideChange方法做个判断可以解决这个bug 第一步:添加slideChande方法 & ...
- tomcat context配置
<Context path="/ext" docBase="/eqp/export" /> 访问目录 ...
- php获取excel所有的批注
phpexcel下载:https://github.com/PHPOffice/PHPExcel <?php /** *获取excel所有的批注 * * 存在编码问题,xls和xlsx的批注编码 ...
- Java面向对象课程小结
1.什么是对象?什么是类? 类和对象的关系 定义类的方法 方法五要素 new关键字 引用类型变量的赋值 null和nullException null大小写的区别 2.方法 重载和重写 构造 方法,带 ...