分析内存使用情况 (JavaScript)
[此文档是初定版,随时可能进行更改。]
JavaScript 内存分析器在 Visual Studio 2012 更新 1 和 Visual Studio 2013 中提供,旨在帮助你了解内存使用量和查找使用 JavaScript 为 Windows 生成的 Windows 应用商店应用程序中的内存泄漏。
JavaScript 内存分析器可以为你执行以下操作:
通过强调最相关的数据帮助你在应用程序中快速查找内存使用情况问题。
你将以快照摘要形式收到此数据,其显示两个快照之间的差异,并提供指向更详细视图的链接。
提供控制器、类型和根的视图来帮助隔离问题。
减少 JavaScript 堆数据中的不可操作的信息。
不是直接在应用程序代码中创建的对象将被自动筛选出来。 还可按对象名称筛选数据。
在本主题中:
运行 JavaScript 内存分析器
检查内存使用量
隔离内存泄漏
查看实时内存使用量摘要
查看快照摘要
查看快照详细信息
查看快照差异
在对象树中查找对象
筛选数据
查看共享对象引用
显示内置对象
保存诊断会话文件
将源代码与内存使用量数据关联
确定内存问题的提示
如果工作的 Windows 应用商店应用程序在 Visual Studio 中打开或安装在运行 Windows 8 或 Windows 8.1 预览版 的计算机上,则可使用内存分析器。
运行内存分析器
打开 Visual Studio。
Start Debugging list on the Standard toolbar, choose Local Machine, Simulator, or Remote Machine." data-guid="47e079b68249fc5aebb6072418787081">如果从 Visual Studio 中运行应用程序,请在“标准”工具栏上的“启动调试”列表中,选择“本地计算机”、“模拟器”或“远程计算机”。
Run Windows Store apps from Visual Studio.' data-guid="317aad82557f9ca8379a556bf29429e7">有关这些选项的更多信息,请参见从 Visual Studio 运行 Windows 应用商店应用程序。
Debug, Performance and Diagnostics.' data-guid="4da34374201512a9087171ebaea825e3">在菜单栏上,选择“调试”和“性能和诊断”。
默认情况下,将分析当前启动项目。 Change Target.' data-guid="41b1795a9711c8e67703fb2d8fa3f9fd">如果要更改分析目标,请选择“更改目标”。
以下选项可用于分析目标:
Startup Project.' data-guid="e36a9628f63dd60067f66508ccdbc973">“启动项目”。 分析当前启动项目。 如果你要在远程计算机上运行应用程序,则必须选择此选项,这是默认值。
Running App.' data-guid="d52c395d893bbdbb46cf3a6a54d0512f">“正在运行的应用程序”。 允许你从正在运行的应用程序的列表中选择应用程序。 在远程计算机上运行应用程序时,不能使用此选项。
当你无权访问源代码时,请使用此选项分析计算机上运行的应用程序的内存使用量。
Installed App.' data-guid="1d432972e0439510e542ab0293459586">“已安装的应用程序”。 允许你选择要分析的已安装应用程序。 在远程计算机上运行应用程序时,不能使用此选项。
当你无权访问源代码时,请使用此选项分析计算机上安装的应用程序的内存使用量。 如果要分析你自己的应用程序开发之外的任何应用程序的内存使用量,此选项也很有用。
Available Tools, select the JavaScript Memory check box, and then choose Start.' data-guid="54d12a21833a363d2ce7518e50412673">从“可用工具”中,选中“JavaScript 内存”复选框,然后选择“启动”。
启动内存分析器时,可能会显示一个“用户帐户控制”窗口,要求你提供运行 Visual Studio ETW Collector.exe 的权限。 Yes.' data-guid="382a81cc47023744963eccd45e0c0620">选择“是”。
与应用程序交互以测试相关的内存使用量方案并查看内存关系图,如以下各节所述。
按 Alt+Tab 切换到 Visual Studio。
Take Heap Snapshot.' data-guid="d307494c21918dd06fc5a604517915d7">若要查看内存分析器正在收集的数据,请选择“拍摄堆快照”。 View a snapshot summary later in this topic.' data-guid="fe1c083dc84753efecccdf6cdbf065a7">请参见本主题后面的查看快照摘要。
可以尝试通过在 JavaScript 内存分析器使用不同的视图来确定内存泄漏。 Isolate a memory leak for a suggested workflow.' data-guid="f8c0c8f1cb893b90bc57098e1b4c6fe1">如果已怀疑你的应用程序正在泄漏内存,请查看隔离内存泄漏中建议的工作流。
使用以下视图来帮助确定应用程序中的内存泄漏:
Live memory usage summary.' data-guid="40bd2bfe191b319a0c46b06eadb0c547">实时内存使用量摘要 。 使用内存使用量图来查找内存使用量的突然增长或由特定操作导致的连续增长的内存使用量。 使用实时内存使用量摘要视图来拍摄堆的快照,这些快照在内存使用量图中显示为一个集合。
Snapshot summary.' data-guid="d4bff27c2b2fda8444ddcbabc18acb36">快照摘要 。 可以在内存分析会话期间或之后查看快照摘要信息。 使用快照摘要可链接到快照详细信息和快照差异视图。
提示 通常,快照差异视图将提供有关内存泄漏的最有用的信息。
Snapshot details.' data-guid="f7acd8f236be06e447ede41084f0620a">快照详细信息 。 显示单个快照的详细内存使用量数据。
Snapshot diff.' data-guid="90eb2ba949adc5e2b192708a4f8071c5">快照差异 。 显示快照之间的差异值。 这些视图将显示对象大小和对象计数方面的差异。
以下是可帮助你更有效地使用 JavaScript 内存分析器的工作流步骤。 如果你怀疑你的应用程序有内存泄漏,这些步骤将非常有用。
在 Visual Studio 中打开应用程序。
运行 JavaScript 内存分析器。 Run the JavaScript memory analyzer.' data-guid="52ba45a62a82a49cfc1cb35709662c42">有关更多信息,请参见运行 JavaScript 内存分析器。
如果有可能,请将你的应用程序置于遭遇内存泄漏之前的状态。 例如,这可能是在大型 DOM 刚要转变之前、加载特定页时或启动应用程序时。
切换到 Visual Studio(按 Alt+Tab)。
Take Heap Snapshot.' data-guid="78f16acc05e0bea94410ea55be19da7b">通过选择“拍摄堆快照”拍摄基线堆快照。
下图演示了一个基线堆快照示例:
提示 console.takeHeapSnapshot command in your code.' data-guid="013127d24f463158b2fd488ad1358015">若要对快照计时进行更精确的控制,请在代码中使用 console.takeHeapSnapshot 命令。
切换到你的应用程序并进行一些你怀疑可能导致内存泄漏的操作。
Check memory usage.' data-guid="c2be465967000d1fef64d574dc2b59d6">如果只是测试内存使用量而不是处理怀疑的内存泄漏,请参见检查内存使用量。
切换到 Visual Studio 并拍摄第二个快照。
切换到你的应用程序并重复你怀疑的导致内存泄漏的操作。
切换到 Visual Studio 并拍摄第三个快照。
下图演示了第二个和第三个快照的示例:
通过拍摄此工作流中的第三个快照,可以筛选出与内存泄漏不相关的、从基线快照到第二个快照的更改。 例如,预计可能有一些更改(如在页面上更新页眉和页脚)会造成内存使用量的更改,但可能与内存泄漏不相关。
使用内存使用量视图,调查从第二个快照到第三个快照在堆大小和对象计数方面的差异。 下面是一些提示:
potential issues (marked in the snapshot summary with a blue information icon).' data-guid="9d8972da773d151d6898bf900845bee9">检查潜在问题(快照摘要中用蓝色信息图标标记)。
diff views of the object heap size and the object count (links with red and green arrows).' data-guid="358e0345330265cf0075191fffb5a51d">检查对象堆大小和对象计数的差异视图(带有红色箭头和绿色箭头的链接)。 差异视图使用彩色编码来突出显示从前一个快照更改的项。 蓝色指示已修改的元素或对象。 绿色表示已添加的元素或对象。
提示 如果某个项是未修改的(黑色),则不泄漏内存。 只有已添加或已修改的项表示潜在的内存泄漏。
检查控制器的差异视图来快速确定使用最多内存的对象。
使用这些视图可根据应用程序的已知行为来查找意外的对象大小或对象计数方面的较大变化。
如果可能,请尝试进一步隔离发生内存泄漏的期间,然后重新拍摄第三个快照。 console.takeHeapSnapshot, user marks, and other memory usage data available in the memory analyzer.' data-guid="418923bb0ef35f661ef039f8c59398d5">若要进一步隔离内存泄漏,请使用 console.takeHeapSnapshot、用户标记以及分析器中提供的其他内存使用量数据。
Show in roots view.' data-guid="1eb77419d113593e3f0eefeb8f3afe30">若要查看差异视图中的对象植根于全局对象中的位置,以防止将其作为垃圾回收,请打开对象的快捷菜单,然后选择“在根视图中显示”。
实时内存使用量摘要视图提供了正在运行的应用程序的内存使用量图,以及所有快照摘要图块的集合。 在此视图中,可以执行拍摄快照、分析摘要信息和导航到其他视图等基本任务。 Snapshot Summary view.' data-guid="ef6b063e283b20c3ee16551930bf5990">停止收集数据后,内存关系图将消失,你只能看到快照摘要视图。
内存关系图显示应用程序进程内存的活动视图,包括专用字节、本机内存和 JavaScript 堆。 内存关系图是进程内存的可滚动视图。 该窗口类似于下方所示:
Associate source code with memory usage data), an inverted triangle appears in the memory usage graph to indicate when that section of code is reached. " data-guid="809a68e01a7d2b1635f07a95d27145d6">如果你已向应用程序代码中添加用户标记(请参见将源代码与内存使用量数据关联),则内存使用量图中将出现一个倒三角形,用于指示何时到达该代码部分。
内存关系图中显示的一些内存是由 JavaScript 运行时分配的。 你无法在应用程序中控制此内存使用量。 当你拍摄第一个快照时,关系图中显示的内存使用量会增加,之后该使用量会对每个附加的快照按最低限度增加。
Take Heap Snapshot from the memory graph." data-guid="c6aef40190822a1d8d5dbebea198df9a">若要拍摄应用程序内存使用量的当前状态的快照,请从内存关系图中选择“拍摄堆快照”。 快照摘要图块会同时出现在实时内存使用量摘要(在应用程序运行时)和快照摘要(在应用程序停止时)中,它提供了有关 JavaScript 堆的信息和指向更详细的信息的链接。 如果拍摄了两个或更多快照,则快照将提供更多信息以将其数据与前一个快照的数据进行比较。
说明 |
---|
JavaScript 内存分析器会在拍摄每个快照之前强制进行垃圾回收。 这有助于确保各个运行中的结果更加一致。 |
以下是你拍摄多个快照时的快照摘要的示例。
快照摘要包括:
快照标题和时间戳。
潜在问题计数(用蓝色信息图标标记)。 此数字(如果存在)标识潜在内存问题(例如,节点未附加到 DOM)的数目。 此计数将链接到快照的控制器视图,此视图按照问题类型进行排序以突出显示潜在问题。工具提示中将显示问题的说明。
堆大小。 此数量包括由 JavaScript 运行时引擎添加到 JavaScript 堆的 DOM 元素和对象。 堆大小将链接到快照的控制器视图。
堆大小差异。 此值显示当前快照的堆大小和前一个快照的堆大小之间的差异。 如果内存增加,则该值后跟一个红色向上箭头;如果内存减少,则该值后跟一个绿色向下箭头。 No change instead of a number." data-guid="d3f2fe2126086b2f761c787cf4664e80">如果快照间的堆大小未发生更改,则将显示文本“无更改”而不是数字。 Baseline." data-guid="4cb207397ff0d666464fa3e6984e063a">对于第一个快照,将显示文本“基线”。 堆大小差异将链接到快照差异的控制器视图。
对象计数。 此计数仅显示在应用程序中创建的对象,并筛选出由 JavaScript 运行时创建的内置对象。 对象计数链接到快照详细信息的类型视图。
对象计数差异。 这将显示两个值:第一个值是自前一个快照以来添加的新对象的数量;第二个值是自前一个快照以来移除的对象的数量。 +25 / -10 indicates that 25 objects have been added, and 10 objects removed.' data-guid="6d6cc2ab2b4f33f1f2eae3f4c334ed2b">例如,+25 / -10 表示添加了 25 个对象,并移除了 10 个对象。 如果对象总计数增加,则此信息后面会跟一个红色向上箭头;如果对象总计数减少,则此信息后面将跟一个绿色向下箭头。 No change instead of a number." data-guid="1e4a598fa3a7f179f17f91a46b26b7a8">如果对象计数未发生更改,则将显示文本“无更改”而不是数字。 Baseline." data-guid="4cb207397ff0d666464fa3e6984e063a">对于第一个快照,将显示文本“基线”。 对象计数差异链接到快照差异的类型视图。
在拍摄快照时屏幕的快照。
提示 |
---|
快照摘要可能显示堆大小或对象计数无更改或减少,但仍可能隐藏内存泄漏。 当新创建的对象的数量或大小小于已删除对象(例如,作为垃圾回收的结果)的数量或大小时,可能会出现此情况。 |
可以在快照详细信息视图中查看有关每个快照的内存使用量的详细信息。
从快照摘要视图中,选择一个链接来查看快照详细信息。 例如,默认情况下,堆大小链接将在控制器视图打开的情况下打开快照详细信息。
此图显示了快照详细信息的控制器视图,以及按问题类型排序的内存使用量数据,并突出显示了潜在问题。
在快照详细信息视图中,你可以通过从工具栏中选择相应的选项来按控制器、类型或根查看内存使用量数据:
Dominators.' data-guid="3f4ab253334698be171110057dd644b4">支配者。 显示堆中所有对象的列表,按保留大小排序。 如果你从快照摘要中的潜在问题链接打开此视图,则将按问题类型对对象进行排序以突出显示潜在问题。 工具提示提供每个问题的说明。
提示 控制器的差异视图可以帮助快速确定使用最多内存的对象。
Types.' data-guid="d9f52996e6aff2710962dc07a03d7458">类型。 显示对象的实例计数和总大小,按对象类型分组。 默认情况下,它们按实例计数排序。
Roots.' data-guid="450c9af926e6fc55600dbd095bf48e9e">根。 显示从根对象到子引用的对象的分层视图。 默认情况下,子节点按保留的大小列排序,最大的排在顶部。
所有三个视图都显示了类似的值类型,包括:
Identifier(s).' data-guid="6457f8eaa93d320c4790540ff5dd4721">标识符。 最能标识对象的名称。 例如,对于 HTML 元素,快照详细信息显示 ID 特性值(如果使用)。
Type.' data-guid="eba9cd42442a0111bba9369254adafbf">类型。 对象类型(例如,HTML 链接元素或 div 元素)。
Size.' data-guid="42a838846d57f24907edcea6d68486bb">大小。 对象大小,不包括任何引用对象的大小。
Retained size.' data-guid="d9e27f60d930c763e0d8c93fe4616174">保留的大小。 对象大小加上所有没有其他父对象的子对象的大小。 从实用的角度而言,这是对象保留的内存量,因此,如果你删除对象,则将回收指定的内存量。
Count.' data-guid="a4283910fc59a60a16ff49f6a23bbbb5">计数。 对象实例的数量。 此值仅显示在类型视图中。
在 JavaScript 内存分析器中,可以在快照差异视图中将一个快照与前一个快照进行比较。
在快照摘要视图中,如果拍摄了两个或更多快照,则可以通过选择差异堆大小或差异对象计数链接来查看差异快照的详细信息。
可以查看有关控制器、类型和根的差异信息。 快照差异显示添加到两个快照之间的堆中的任何对象。
此图显示快照差异中的类型视图。
snapshot details window.' data-guid="82f7caab04241adbd53eb8caae2073f1">在快照差异窗口中,控制器、类型和工具视图与快照详细信息窗口中的视图相同。 快照差异显示与快照详细信息相同的信息,并具有以下附加值:
Operation.' data-guid="7419650be157834a74df2acd5bb50936">“操作”。 显示当前快照中的对象和前一个快照中的对象之间的更改类型。 可能的值包括:
Added.' data-guid="9b1eab39fcf2d7f976052f420ba379e6">“已添加”。 自前一个快照以来添加的对象使用绿色进行彩色编码。
Modified.' data-guid="55693173c76ca3aff44371745ecc0f3e">“已修改”。 自前一个快照以来修改的对象使用蓝色进行彩色编码。
Unchanged.' data-guid="6661dd506b57077eee1d68446ba5cebc">“未更改”。 自前一个快照以来未更改的对象显示“未更改”或空白值。 未更改的对象不会泄漏内存。
Unchanged [Baseline].' data-guid="6b59930b1e88ab5b69176351c7abde74">“未更改 [基线]”。 未从基线快照更改的对象显示此值。 这些对象不会泄漏内存。
Size diff.' data-guid="f45f41b8ff759d9a79c820bef782244f">大小差异。 当前快照中对象的大小及其在之前的快照中的大小之间的差异,不包括任何引用对象的大小。
Retained size diff.' data-guid="1d09ba3c206a743b8aa40133ed1036e7">保留的大小差异。 当前快照中对象的保留的大小及其在上一个快照中的保留的大小之间的差异。 保留的大小包括对象大小加上其所有没有其他父对象的子对象的大小。 从实用的角度而言,保留大小是对象保留的内存量,因此,如果你删除对象,则你回收指定的内存量。
Count diff.' data-guid="505c602ca41f68da62217ad26ef0e78a">计数差异。 当前快照中的对象实例数和上一个快照中的对象实例数之间的差异。 此值仅显示在类型视图中。
Global object." data-guid="606c7fcc2d825b211613b7c4ce139b65">在控制器视图和类型视图中,你可看到特定对象与 Global 对象的关系。 Global object tree." data-guid="f672c83b64140ae28a4fc72fc2febda2">你可在根视图中轻松找到已知对象,而无需搜索 Global 对象树。 Show in roots view.' data-guid="c770916aeae5b1c87d040ad3938c2ce5">为此,请在控制器或类型视图中打开对象的快捷菜单,然后选择“在根视图中显示”。
在控制器视图和类型视图中,你可以通过搜索特殊标识符来筛选出数据。 Identifier filter text box in the upper right.' data-guid="e8de8d105fc6f251c809be942e542f77">若要搜索标识符,请在右上角的“标识符筛选器”文本框中键入标识符名称。 在开始键入时,不包含键入字符的标识符会被筛选出来。
由于每个视图都有其自己的筛选器,因此当你切换到另一个视图时,不会保留上一个视图的筛选器。
在控制器视图和类型视图中,下窗格包含显示共享引用的对象引用列表。 当你在上窗格中选择一个对象时,对象引用列表将显示指向该对象的所有对象。
Display object IDs in the settings list in the upper-right corner of the upper pane.' data-guid="9635cd703ad6433484c79013459d8669">如果需要额外的帮助来标识等效对象,请在上窗格的右上角的设置列表中选择“显示对象 ID”。 Identifier(s) list (the IDs appear in all views, not just the Object references list).' data-guid="348940df23ff7dce86643e79402f6e38">此选项将在“标识符”列表中的对象名称旁显示对象 ID(ID 将显示在所有视图中,而不只是显示在对象引用列表中)。 具有相同 ID 的对象是共享引用。
下图显示了选定项目的对象引用列表以及显示的 ID。
默认情况下,控制器和类型视图仅显示你在应用程序中创建的对象。 这可帮助你筛选出不需要的信息,并隔离应用程序相关的问题。 但是,有时查看由 JavaScript 运行时为你的应用程序生成的所有对象可能会很有用。
Show built-ins in the settings list in the upper-right corner of the pane.' data-guid="ed0f77b19531590df7f24a0f5078d36a">若要显示这些对象,请在窗格右上角的设置列表中选择“显示内置对象”。
诊断快照摘要与其关联的详细信息视图一起保存为 .diagsession 文件。 Solution Explorer displays previous diagnostics sessions in the Diagnostic Sessions folder.' data-guid="7e2472510310345bd9478dbeeb790413">“解决方案资源管理器”在诊断会话文件夹中显示前几个诊断会话。 Solution Explorer, you can open previous sessions or remove or rename files.' data-guid="af6225424df27655c7b79933194d47ba">在“解决方案资源管理器”中,可以打开前几个会话或者删除或重命名文件。
若要帮助隔离具有内存问题的代码部分,可在 JavaScript 内存分析器中使用以下两条命令:
console.takeHeapSnapshot takes a heap snapshot that appears in the JavaScript memory analyzer.' data-guid="3d5057ab0ceec85d246e27e873f362a7">console.takeHeapSnapshot 采用出现在 JavaScript 内存分析器中的堆快照。 JavaScript Console commands.' data-guid="af5f10a02eb29d86205d25cfcedb85c0">此命令是 JavaScript 控制台命令之一。
performance.mark sets a user mark (the inverted triangle) that appears in the timeline of the memory graph in the summary view while the app is running.' data-guid="4bf851752a472497a8bc855e47982a70">performance.mark 设置一个用户标记(倒三角形),该标记在应用程序运行时显示在摘要视图中的内存关系图的时间线上。 此命令采用一个描述事件并且在内存关系图中显示为工具提示的字符串参数。 此说明不能超过 100 个字符。
提示 |
---|
console.takeHeapSnapshot to speed up the analysis when repeating memory usage scenarios.' data-guid="d4443b5970b6faf849f364e2f8852f95">重复内存使用量方案时,请使用 console.takeHeapSnapshot 来加速分析。 |
如果你将这两条命令添加到应用程序中并在 JavaScript 内存分析器的外部运行应用程序,则这两条命令将引发异常。 takeHeapSnapshot, use this code:' data-guid="314b53ee1aef724a6eccd8be02cd5829">但是,你可在使用这两条命令之前测试它们是否存在。(这两条命令在会话启动阶段的早期不存在。)若要检查是否可以安全调用 takeHeapSnapshot,请使用此代码:
if (console && console.takeHeapSnapshot) {
console.takeHeapSnapshot();
}
performance.mark, use this code:' data-guid="23c2deb93e8d7f44af766bd875076765">若要检查是否可以安全调用 performance.mark,请使用此代码:
if (performance && performance.mark) {
performance.mark("message_string");
}
performance.mark string argument is set to "data generated":" data-guid="979e4a5c213e9e7c795203f2d54c9d19">以下是具有多个用户标记和当前选定用户标记的工具提示的内存关系图,其中,performance.mark 字符串参数设置为“data generated”:
Isolate a memory leak.' data-guid="7b99817ee8a34294e2547393926dd1e1">按照隔离内存泄漏中描述的工作流操作。
使用快照差异的控制器视图可帮助快速确定主要内存问题。
Show in roots view to see where an object is referenced in the memory hierarchy.' data-guid="19a63521813b8ef3cf8a5600ff8009c2">使用在根视图中显示可查看在内存层次结构中引用对象的位置。
当内存问题的原因时难以确定时,应使用各种视图(例如控制器和类型)查找共性,例如大小和对象计数不断增长的关联的对象和类型。
Managing memory in Windows Store apps.' data-guid="73df88f91e0139bf3e0a4c8c92988ee3">阅读 管理 Windows 应用商店应用程序中的内存。
考虑临时修改代码来隔离问题。 例如,你可能希望:
console.takeSnapshot and performance.mark. (See Associate source code with memory usage data.)' data-guid="bbb9df343b49e950c518a2b8938d9bc6">对内存分析器使用 console.takeSnapshot 和 performance.mark 命令。(请参见将源代码与内存使用量数据关联。)
可以使用这两条命令来帮助隔离无法通过手动拍摄堆快照进行隔离的问题。
创建一个测试对象,并在 JavaScript 内存分析器视图(如控制器视图)中跟踪该对象。 例如,可以将一个极大对象附加到另一个对象以查明特定对象或组件是否已进行垃圾回收。
在用户导航到新页后,查找无意间保留在内存中的对象,这是导致出现内存问题的一个常见原因。 URL.CreateObjectUrl function can cause this problem.' data-guid="82caa60cb46c86089a0d068571ba3b70">例如,URL.CreateObjectUrl 函数的使用不当可能导致此问题。
from:http://msdn.microsoft.com/zh-cn/library/windows/apps/jj819176.aspx
分析内存使用情况 (JavaScript)的更多相关文章
- Android使用procrank和dumpsys meminfo 、top分析内存占用情况
如果你想查看所有进程的内存使用情况,可以使用命令procrank.dumpsys meminfo查看,当然也只可以过滤出某个进程如:dumpsys meminfo | grep -i phone 先来 ...
- 【经验】使用Profiler工具分析内存占用情况
Unity3D为我们提供了一个强大的性能分析工具Profiler.今天我们就使用Profiler来具体分析一下官方样例AngryBots的内存使用信息数据. 首先打开Profiler选择Memory选 ...
- Linux系统下分析内存使用情况的管理工具
有许多办法可以获得Linux系统上所安装内存的信息,并查看其中有多少内存正在使用中.有的命令会展示大量的细节,而有的命令则提供了简洁(但不一定容易理解)的结果.在这篇文章中将介绍一些更有用的工具,帮助 ...
- 如何使用memstat 插件分析内存泄漏问题
对于内存泄漏问题,如何分析并找到内存泄漏的原因是个难点.KingbaseES 提供了memstat 扩展插件用于分析内存泄漏的原因. 一.使用 memstat 插件 1.修改shared_preloa ...
- Android最佳性能实践(二)——分析内存的使用情况
由于Android是为移动设备开发的操作系统,我们在开发应用程序的时候应当始终把内存问题充分考虑在内.虽然Android系统拥有垃圾自动回收机制,但这并不意味着我们就可以完全忽略何时去分配或释放内存. ...
- 【转】Android内存机制分析2——分析APP内存使用情况
上面一篇文章说了Android应用运行在dalvik里面分配的堆和栈内存区别,以及程序中什么代码会在哪里运行.今天主要是讲解一下Android里面如何分析我们程序内存使用情况.以便后续可以分析我们程序 ...
- Linux内存使用情况以及内存泄露分析之工具与方法
<Linux C/C++ Memory Leak Detection Tool> 1. 内存使用情况分析 1.1 系统总内存分析 通过cat /proc/meminfo,可用的物理内存=M ...
- Android内存机制分析2——分析APP内存使用情况
上面一篇文章说了Android应用运行在dalvik里面分配的堆和栈内存区别,以及程序中什么代码会在哪里运行.今天主要是讲解一下Android里面如何分析我们程序内存使用情况.以便后续可以分析我们程序 ...
- 解决Vue编译和打包时频繁内存溢出情况CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
解决Vue编译和打包时频繁内存溢出情况CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 如上图所示:频繁出现此 ...
随机推荐
- C#中文件管理的运用(Twelfth Day)
又到了总结的时间了,今天在云和学院学习了文件管理的一些运用及复习昨天学的里氏转换.今天我就总结下昨天遗留下的问题以及今天所学的知识. 昨天遗留的问题 里氏转换(父类转子类) 例:在这里定义父类Peop ...
- Hibernate之工具类HibernateUtil
原创文章,转载请注明:Hibernate之工具类HibernateUtil By Lucio.Yang 1.最简单的工具类,实现SessionFactory的单例共享,session的管理 pack ...
- wget 无法下载jdk的处理办法
完整语句:wget --no-cookie --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle. ...
- BULK SQL
DECLARE TYPE TY_EMP IS TABLE OF EMP%ROWTYPE; --如果是IS TABLE OF行类型(ROWTYPE.RECORD等)就是二维 V_Emp TY_EMP; ...
- Python网络编程——处理套接字错误
在网络应用中,经常会遇到这种情况:一方尝试连接,但另一方由于网络媒介失效或者其他原因无法响应. Python的Socket库提供了一个方法,能通过socket.error异常优雅地处理套接字错误. 1 ...
- Regex阅读笔记(五)java操作篇
首先一个demo程序 Java的正则表达式包为java.util.regex,主要是使用其中的Pattern和Matcher. groupCount方法时候都可调用,而大多数方法都必须在匹配尝试成功之 ...
- 第三章 视图和URL配置
在Mysite文件夹中,创建一个views.py的空文件,输入: from django.http import HttpResponse def hello(request): return Htt ...
- 使用Jquery后去div个数
<div id="tree1" class="tree-folder-content"> <div class="tree-fold ...
- asp.net插入sql server 中文乱码问题解决方案
创建数据库的代码---创建promary表 create table promary ( proID int primary key, proName varchar(50) not null ) 出 ...
- MFC基础,MFC自绘控件学习总结.---转
前言:从这学期开始就一直在学习自绘控件(mfc),目标是做出一款播放器界面,主要是为了打好基础,因为我基础实在是很烂....说说我自己心得体会以及自绘控件的方法吧,算是吐槽吧,说的不对和不全的地方,或 ...