.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:进程的状 ...
随机推荐
- 通过GDI+绘制 验证码
只为了记录下自己的学习历程,方便日后查看 现在开始言归正传,以下为其完整代码附上 using System; using System.Collections.Generic; using Syste ...
- mac osx Forbidden You don't have permission to access / on this server解决方法
(1)首先查看*.conf 是否有读写权限,如果没有要将文件赋予读写权限,比如 localhost.conf (2)再查看/Users/username/Sites/localhost/文件夹是否有i ...
- 第一章 DeepLab的创作动机
这一段时间一直在做深度学习方面的研究,目前市场上的深度学习工具主要分为两大块.一块是基于Python语言的theano:另一块是可以在多个语言上使用并能够在GPU和CPU之间随意切换的Caffe.但是 ...
- 如何删除 eclipse debugger 下不用的Java Application
问题描述:之前写了几个 main 函数 用于测试,现在删除掉了 但是debugger下还存在,看着不爽,想删掉 解决方案: 1.项目--右键 2.删掉就可以了
- JS中检测数据类型的几种方式及优缺点【转】
1.typeof 用来检测数据类型的运算符 typeof value 返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number"."string&quo ...
- Banner插件版
条件:使用JQ. 使用情况:当目标元素调用该插件时,插件产生的元素会替换该目标元素,并且在目标元素位置生成.需要输入一组图片地址数组(对象还没有实现,慢慢改善)默认宽高是600*400,可在后面的参数 ...
- 2014 summer training总结篇
还有一周暑期集训就要结束了,从7月份结束军训到现在一个多月的时间,收获也是有的只不过与之前预想的相比显得十分微薄. 无论是前两天的两场个人赛还是之前的组队赛自己始终是在ranklist的后半部分.一开 ...
- [IOS]使用了cocoapods 抱错Pods was rejected as an implicit dependency for ‘libPods.a’ because its architectures ......
Pods was rejected as an implicit dependency for ‘libPods.a’ because its architectures ‘i386’ didn’t ...
- python基础之day2
python基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统 ...
- tornado web 框架的认识
tornado 简介 1,概述 Tornado就是我们在 FriendFeed 的 Web 服务器及其常用工具的开源版本.Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的 ...