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 查看内存使用情况的更多相关文章

  1. Linux下查看内存使用情况方法总结

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  2. linux下查看内存使用情况

    基本内存术语解读 1> free -m 同样是做为缓存,buffers和cache又有啥区别呢? 于是又查了些资料,发现buffers实际应该是叫“缓冲”,其英文解释是:A buffer is ...

  3. 【查看内存】Linux查看内存使用情况(二)

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  4. Linux 下查看内存使用情况方法总结

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  5. LINUX查看内存使用情况 free

    # free 显示结果如下: Mem:表示物理内存统计 total 内存总数 8057964KB used 已使用的内存 7852484KB free 空闲的内存数 205480KB shared 当 ...

  6. free命令查看内存使用情况(转载)

    linux free命令查看内存使用情况 时间:2016-01-05 06:47:22来源:网络 导读:linux free命令查看内存使用情况,free命令输出结果的各选项的含义,以及free结果中 ...

  7. jmap查看内存使用情况与生成heapdump

    jmap查看内存使用情况与生成heapdump 如果想分析自己的JAVA Application时,可以使用jmap程序来生成heapdump文例: jmap -heap 1234  (1234为进程 ...

  8. Windbg + .Net .NET Memory Profiler 排查内存泄露

    这是一个Winform程序,用于项目中的定时运算.症状是,运行一段时间后,内存持续上升.如一天内就能够达到300M. 打开.Net Memory Profiler,监控该程序,一段时间后,看到该程序产 ...

  9. Linux查看内存使用情况

    输入:top PID:进程的ID USER:进程所有 PR:进程的优先级别,越小越优先被执 NInice: VIRT:进程占用的虚拟内 RES:进程占用的物理内 SHR:进程使用的共享内 S:进程的状 ...

随机推荐

  1. EXEC sp_executesql

    declare @sql nvarchar(max)declare @nu int set @sql='SELECT * FROM [FMTest].[dbo].[FM_Radio_Station]' ...

  2. css3clock.js - 一个用CSS3与纯js实现的简单时钟

    前言 项目代码明细可以查看我Github上的源码:https://github.com/nelsonkuang/css3clock.js 实现思路 主要是用CSS3控制时针.分针和秒针旋转:时针每12 ...

  3. lamp

      Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立 的程序,但是因为常被放在一起使用,拥有了越来越高的 ...

  4. [软件推荐、资料分享]MATLAB

    MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分. Matlab ...

  5. chm文件索引丢失和不能搜索

    regsvr32 hhctrl.ocx regsvr32 itss.dll regsvr32 itircl.dll

  6. 我的window10

    前言 这个一时半会写不完,也比较耗费时间,留着以后,每周更新一些新的技巧. 折腾了3天多时间的成果——>window10 的全新桌面,不比苹果差!不要说 windows 不能用 mac . 既然 ...

  7. 解决Ionic的ion-slide-box 2条数据渲染问题

    当slider数据列表是动态获取时,如果数据结果只有2条数据时,slider列表会多复制俩个,通过下面的slideChange方法做个判断可以解决这个bug 第一步:添加slideChande方法 & ...

  8. tomcat context配置

    <Context path="/ext" docBase="/eqp/export" />                访问目录         ...

  9. php获取excel所有的批注

    phpexcel下载:https://github.com/PHPOffice/PHPExcel <?php /** *获取excel所有的批注 * * 存在编码问题,xls和xlsx的批注编码 ...

  10. Java面向对象课程小结

    1.什么是对象?什么是类? 类和对象的关系 定义类的方法 方法五要素 new关键字 引用类型变量的赋值 null和nullException null大小写的区别 2.方法 重载和重写 构造 方法,带 ...