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

2013 年 5 月 13 日

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 的版本中重新打开。最后,开发者可以在打开文件的时候检查快照磁贴和详细视图。

图片来源—— MSDN Dr. Dobbs

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


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

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

2013 年 5 月 13 日 11:01611
用户头像

发布了 256 篇内容, 共 48.3 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

每周花6小时跟清华大牛学Java:JVM、高并发多线程、算法、微服务。

Java成神之路

Java 编程 程序员 面试

大数据2学习总结

周冬辉

JavaScript 简介

InfoQ_34a83d636158

架构师训练营 week13 - 学习总结

devfan

面试阿里太难了!二本毕业、两年crud经验,侥幸通过面试定级P6

Java成神之路

Java 编程 程序员 面试

绝了!大厂20个企业级实战项目,靠它成功定级了阿里P7

周老师

Java 编程 程序员 架构 面试

第十三周作业

Linuxer

详解 Python 的二元算术运算,为什么说减法只是语法糖?

Python猫

Python 编程 翻译

你所在的行业,常用的数据分析指标有哪些?

李朋

JavaScript中的原型到底该如何理解?

Walker

JavaScript 前端 面向对象编程 原型

CommonMistakes

卓丁

够开放吗?来,和一群开发者搞事情!

易观大数据

区块链赋能数字经济,为知识和版权确权定价

CECBC区块链专委会

区块链 知识产权 数字经济

架构师训练营第十三周作业

叮叮董董

架构师训练营-第十二周作业

Geek_a327d3

云栖大会倒计时8天,新一代CDN的技术突破和应用实践专场有什么看点?

巨侠说

CDN CDN加速

架构师训练营 week13

devfan

搜索引擎如何推荐网页

dongge

大数据解答(二)

dony.zhang

数据分析

java快速开发平台功能特点之代码生成器

力软.net/java开发平台

Java 分布式 代码组织 平台应用服务

北京或先行落地央行数字货币 人民币3.0时代将来临

CECBC区块链专委会

数字货币 银行 人民币

微信群总是有人发广告?看我用Python写一个自动化机器人消灭他!

刘早起😶

Python

架构师训练营-第十一周作业

Geek_a327d3

捡到宝啦!阿里内部人手一本的Springboot进阶手册,先学为敬

Java架构师迁哥

打破Scrum的五个误区(译)

Bruce Talk

Scrum 敏捷开发 Agile

Centos7 IP、名字、防火墙配置

yuanhang

centos7 防火墙 静态IP

【架构师训练营】第 13周作业

花生无翼

Linux Shell编程

yuanhang

Shell

常用数据分析指标

为什么说区块链是制造信任的机器?

CECBC区块链专委会

区块链 不可篡改

架构师课程第十三周总结

dongge

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