BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Visual Studio 2013中的.NET内存剖析工具

| 作者 Jonathan Allen 关注 525 他的粉丝 ,译者 臧秀涛 关注 2 他的粉丝 发布于 2013年6月25日. 估计阅读时间: 2 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

认为.NET开发者不需要担心内存管理问题,这是一个常见的误解。尽管内存的处理的确是更简单了,但是开发者仍然会陷入困境。

在使用.NET编程时,有三个最常见的错误:

  • 内存泄露,通常是委托或事件处理程序没有正确释放。
  • 内存使用非常低效,主要是持有的内存比实际需要的多。
  • 不必要的内存分配,这个问题非常微妙,可能会随着时间的推移越来越严重。

在Andrew B Hall所做的预览中,Visual Studio 2013可以捕捉以产品设置运行的应用程序的状态。要实现该功能,需要ProcDump这个工具来创建进程的内存快照。这些转储信息可以加载到Visual Studio中进行分析。

和其他内存剖析工具类似,Visual Studio 2013会列出每种类型所分配的实例数,以及从根到这些对象的路径。(“根”对象是可以通过静态字段或局部变量访问的对象,不能被垃圾收集器清理。)

确定内存泄露的根源仍然需要开发者完成,因此Visual Studio还比不上市面上的其他产品。利用正确的过滤器,Red Gate的ANTS Memory Profiler可以标记表现出常见错误(比如前面提到的事件处理程序导致的内存泄露)的对象。SciTech的.NET Memory Profiler甚至做得更好,它会给出一份总结信息,对该工具所看到的内存问题予以警告。

SciTech提供的信息也比Visual Studio 2013和Red Gate要详尽。它不但能指出从根到所观察对象的路径,还能显示最初创建该对象的语句的调用路径。对象上的所有字段也都可以得到。

Visual Studio 2013中的内存剖析工具只是个预览版本,更多特性可能会在以后发布。但是从目前情况来看,在.NET内存剖析方面,微软只能排第三,而且远远落后于前面两家。

查看英文原文:.NET Memory Profiling in Visual Studio 2013

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT