VS2012新增JS内存分析器可识别Windows Store应用中的内存泄露
英文原文:JavaScript Memory Analyzer in Visual Studio 2012 Identifies Leaks in Windows Store Apps
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的版本中重新打开。最后,开发者可以在打开文件的时候检查快照磁贴和详细视图。