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. nodejs复习01

    console 格式化 console.log("%s:%s", "a", "b") //字符串 console.log("%d. ...

  2. PDA手持终端扫描条码开单打印一体 结合后台电脑系统 数据同步交互解决方案

    PDA通过扫描商品条码移动开单,实现便携式办公,伴随式销售,PDA能通过WIFI无线局域网.GPRS互联网直接与主机连接,让公司业务人员能随时随地了解公司产品信息,直接扫描商品条码,进行开单.入库.库 ...

  3. xsl: normalize-space(string str) 函数

    本文出自http://technet.microsoft.com/zh-cn/magazine/ms256063%28VS.90%29.aspx 通过去掉前导和尾随空白并使用单个空格替换一系列空白字符 ...

  4. Spring MVC --->>>No mapping found for HTTP request with URI

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> < ...

  5. 搜索引擎Query Rewrite

    中心词抽取项目总结 B2B国际站Query重写.ppt 达观数据搜索引擎的Query自动纠错技术和架构详解 Natural Language Processing Simrank++ Query re ...

  6. [VijosP1764]Dual Matrices 题解

    题目大意: 一个N行M列的二维矩阵,矩阵的每个位置上是一个绝对值不超过1000的整数.你需要找到两个不相交的A*B的连续子矩形,使得这两个矩形包含的元素之和尽量大. 思路: 预处理,n2时间算出每个点 ...

  7. SQLServer CASE WHEN 用法

    SELECT sc.NAME AS 学校名称 ,xueyuan.NAME AS 院系 ,StudentNo AS 学号 ,st.StudentName AS 学生姓名 ,st.sex AS 性别 ,s ...

  8. JSON数据和对象

    在js中像数字类型.字符串类型.布尔类型这些都不能再被拆分,属于基本类型.与之相对有一种复杂类型:对象类型,它是本身由多个其他类型组合而成的. 创建对象有两种方法,一.new Object()创建一个 ...

  9. mina通信 demo

    1,要用到4个jar 2,服务端 package mina.server; import java.io.IOException; import java.net.InetSocketAddress; ...

  10. 步骤进度条 css

    用css写一个简单的步骤进度条 html代码: <h4>南京游玩</h4> <ul class="step-list"> <li> ...