BT

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

Visual Studio 2012新增JavaScript内存分析器可识别Windows Store应用中的内存泄露

| 作者 Anand Narayanaswamy 关注 0 他的粉丝 ,译者 李彬 关注 1 他的粉丝 发布于 2013年5月14日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Visual Studio 2012 Update 1中带有一个针对Windows 8的JavaScript内存分析工具,该工具能够帮助开发者了解基于JavaScript的Windows Store应用的内存使用情况。该工具适用于Windows 8上的Visual Studio 2012的Express、Professional、Premium和Ultimate版本。

该JavaScript内存工具中的运行启动项目(Launch startup project选项支持开发者在当前的Visual Studio实例中分析启动项目。运行安装的应用包(Launch installed App Package选项将运行Windows Store应用以便Visual Studio 2012启动诊断会话。最后一个选项是连接到运行中的应用(Attach to running app,该选项允许开发者连接到正在运行的应用使Visual Studio启动诊断会话。

开发者运行JavaScript内存工具之后会在该工具中展现一幅进程内存图,开发者能够通过该图观测应用随时间推移所消耗的内存数量。通过这幅进程内存图开发者能够了解应用的内存使用趋势,从而做出判断在合适的时间获取一份堆快照。

为了观察JavaScript的内存情况,开发者需要使用获取快照(Take a Snapshot选项以生成一份概要磁贴——除了应用的屏幕截图之外,该概要还能够表明获取快照时的JavaScript堆大小,以及分配的对象数量。

开发者能够按照规律的时间间隔持续捕捉快照,并能够将生成的额外磁贴用于未来的比较。此外,通过位于详细视图右上角的下拉菜单还能够在详表显示内置插件和对象的ID。

此外,开发者还可以使用console.takeHeapSnapshot和console.profileMark以编程的方式捕捉快照,前者将获取快照并在工具中展现;而后者可以在诊断会话运行时,在内存图上显示简要标记并支持在图上标注定制的标记。

有时,开发者在使用命令前需要检查其存在性,因为某些命令仅在内存分析器的上下文中可用:

 
if (console && console.takeHeapSnapshot)
{
  console.takeHeapSnapshot();
} 

快照集合默认存储在硬盘上的诊断会话文件夹,该文件夹中还包括.diagsession文件。快照可以被重命名或在团队间分享,并能够在兼容 Visual Studio 2012的版本中重新打开。最后,开发者可以在打开文件的时候检查快照磁贴和详细视图。

图片来源——MSDNDr. Dobbs

查看英文原文:JavaScript Memory Analyzer in Visual Studio 2012 Identifies Leaks in Windows Store Apps


感谢孙镜涛对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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