查看内存使用情况 NET Memory Profiler 查看内存使用情况

查看内存使用情况
NET Memory Profiler 查看内存使用情况

1 简介

.Net Memory Profiler(以下简称Profiler):专门针对于.NET程序,功能最全的内存分析工具,最大的特点是具有内存动态分析(Automatic Memory Analysis)功能。

2 安装

http://memprofiler.com/download.aspx

下载好后 直接下一步下一步

3 使用方法

支持7种类型.NET程序

查看内存使用情况
NET Memory Profiler 查看内存使用情况

  • 启动跟踪(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,得到弹出菜单如下图.

 查看内存使用情况
NET Memory Profiler 查看内存使用情况

5 操作 

 

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

查看内存使用情况
NET Memory Profiler 查看内存使用情况

 

选择级别

查看内存使用情况
NET Memory Profiler 查看内存使用情况

 程序代码

查看内存使用情况
NET Memory Profiler 查看内存使用情况
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 = 0;
            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("
"); 
            }
        }

        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(0, 0, 111);
            clientConfiguration.SocketPool.ConnectionTimeout = new TimeSpan(0, 0, 111);
            clientConfiguration.SocketPool.DeadTimeout = new TimeSpan(0, 0, 111);
            var client = new CouchbaseClient(clientConfiguration);
            var result = client.Store(StoreMode.Set, key, "test");

            if (result)
            {
                var savedBeer = client.Get(key);
                Console.WriteLine(clientConfiguration.Urls[0].AbsoluteUri + "   " + savedBeer.ToString());
            }
            else
            {
                Console.WriteLine(clientConfiguration.Urls[0].AbsoluteUri + "   失败" );
            }

        }
    }
}
查看内存使用情况
NET Memory Profiler 查看内存使用情况

执行效果如下

查看内存使用情况
NET Memory Profiler 查看内存使用情况

可以看到占用Uri资源实例是最多的

存储快照 分析原因

查看内存使用情况
NET Memory Profiler 查看内存使用情况

查看内存使用情况
NET Memory Profiler 查看内存使用情况

双击

查看内存使用情况
NET Memory Profiler 查看内存使用情况

可以看出造成URI实例原因是 couchbasepool 造成的,可以跟踪程序代码

Import Memory Dump

转存需要分析的dmp文件

查看内存使用情况
NET Memory Profiler 查看内存使用情况

 查看内存使用情况
NET Memory Profiler 查看内存使用情况

需要下载SDK支持

https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit

查看内存使用情况
NET Memory Profiler 查看内存使用情况

 查看内存使用情况
NET Memory Profiler 查看内存使用情况

可以看到内存的使用情况 分析溢出

推荐其他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是一款帮你轻松找出内存泄漏的分析工具,并且可以轻松搞定许多性能问题。

1 简介

.Net Memory Profiler(以下简称Profiler):专门针对于.NET程序,功能最全的内存分析工具,最大的特点是具有内存动态分析(Automatic Memory Analysis)功能。

2 安装

http://memprofiler.com/download.aspx

下载好后 直接下一步下一步

3 使用方法

支持7种类型.NET程序

查看内存使用情况
NET Memory Profiler 查看内存使用情况

  • 启动跟踪(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,得到弹出菜单如下图.

 查看内存使用情况
NET Memory Profiler 查看内存使用情况

5 操作 

 

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

查看内存使用情况
NET Memory Profiler 查看内存使用情况

 

选择级别

查看内存使用情况
NET Memory Profiler 查看内存使用情况

 程序代码

查看内存使用情况
NET Memory Profiler 查看内存使用情况
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 = 0;
            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("
"); 
            }
        }

        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(0, 0, 111);
            clientConfiguration.SocketPool.ConnectionTimeout = new TimeSpan(0, 0, 111);
            clientConfiguration.SocketPool.DeadTimeout = new TimeSpan(0, 0, 111);
            var client = new CouchbaseClient(clientConfiguration);
            var result = client.Store(StoreMode.Set, key, "test");

            if (result)
            {
                var savedBeer = client.Get(key);
                Console.WriteLine(clientConfiguration.Urls[0].AbsoluteUri + "   " + savedBeer.ToString());
            }
            else
            {
                Console.WriteLine(clientConfiguration.Urls[0].AbsoluteUri + "   失败" );
            }

        }
    }
}
查看内存使用情况
NET Memory Profiler 查看内存使用情况

执行效果如下

查看内存使用情况
NET Memory Profiler 查看内存使用情况

可以看到占用Uri资源实例是最多的

存储快照 分析原因

查看内存使用情况
NET Memory Profiler 查看内存使用情况

查看内存使用情况
NET Memory Profiler 查看内存使用情况

双击

查看内存使用情况
NET Memory Profiler 查看内存使用情况

可以看出造成URI实例原因是 couchbasepool 造成的,可以跟踪程序代码

Import Memory Dump

转存需要分析的dmp文件

查看内存使用情况
NET Memory Profiler 查看内存使用情况

 查看内存使用情况
NET Memory Profiler 查看内存使用情况

需要下载SDK支持

https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit

查看内存使用情况
NET Memory Profiler 查看内存使用情况

 查看内存使用情况
NET Memory Profiler 查看内存使用情况

可以看到内存的使用情况 分析溢出

推荐其他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是一款帮你轻松找出内存泄漏的分析工具,并且可以轻松搞定许多性能问题。