学习啦 > 学习电脑 > 电脑硬件知识 > 内存知识 > vs2010内存分析的方法

vs2010内存分析的方法

时间: 乐恒1051 分享

vs2010内存分析的方法

学习啦在线学习网   想要弄清vs2010内存分析的结果,可以通过基于软件的工具检测,和使用程序的检测方式。为此学习啦小编为大家整理推荐了,希望大家喜欢。

  vs2010 内存分析

学习啦在线学习网   其实VS已经提供基于CPU占用情况的性能分析功能,但它并不能什么情况都能分析出来。当你发现mscorwks.dll这玩意占用着大量的资源,确无法点击进去的看具体情况的时候有可能会感到无能为力,也许已经尽力了那些.net framework的事情管不了。其实mscorwks.dll的损耗和我们编写的代码有着紧密的联系,我们可以通过VS的内在分析工作看下代码的内存分配状况然后再查找问题。

  打开性能分析向导

  选择内存分配采样即可。

学习啦在线学习网   运行后会产以下的结果图:

  图中可以看到占用字节最多的方法和分配最多字节的类型,我们可以点击内存分配最多的类型看下详细列表

  在这里我们可以看到byte[]和char[]分配了大量的内存,而这些通过cpu性能分析是看不到的,而这些对像的创建和销毁都会使用的资源的。我们可以点击一下看这些内存分配是那里产生的。

  从上面的图可以看到byte[]的分配主要是来源于池的初始化,既然是必须的就不用考虑那是必须做的。再来看下char[]来源于每次写入的Encoding.Getbytes里的string.ToCharArray();反编译看下代码情况:

  从代码可以看到原因所在,因为GetBytes需要一个char[],而string每次获取char[]都是返回一个新提char[]对象。其实这两个对象都提供基于char[]操作和copy的到char[]的方法。仔细看下MSDN你就能找到你想要的:)这里我就不多说了。

学习啦在线学习网   调整一下代码后的分析结果又怎样呢?

学习啦在线学习网   调整一下char[]的分配一下子就少了:)创建的对象少了,分配的内存少了,那内存回收就不用说了。

2941350