分析内存快照
最后修改时间:2022 年 9 月 19 日本主题介绍如何在 IntelliJ IDEA 中拍摄快照或打开外部快照后分析快照。
IntelliJ IDEA 打开Profiler工具窗口,其中包含内存快照细分。
快照的左侧部分显示应用程序中的类列表、每个类有多少个活动实例、所有实例的浅层大小和保留大小。
浅层大小:分配用于存储对象本身的内存量。它不包括该对象引用的对象的大小。
保留大小:对象的浅层大小与其保留对象的浅层大小之和(对象仅从此对象引用)。换句话说,保留大小是通过垃圾收集该对象可以回收的内存量。
快照的右侧部分有几个选项卡,可让您计算和显示以下信息:
最大对象选项卡列出了保留大部分内存的对象,按其保留大小排序。这些对象呈现为支配树根。此选项卡可以帮助您查找由单个对象引起的内存泄漏。
GC Roots选项卡显示类列表及其对应的垃圾收集器根对象。此信息是在拍摄快照时无法进行垃圾收集的所有对象的概述。例如,查看哪个类加载器占用应用程序服务器中的大部分内存消耗可能很有用。
“合并路径”选项卡显示按类对对象进行分组,并显示保留它们的支配对象的路径。此信息有助于理解为什么保留特定类的实例。
摘要选项卡显示一般信息,例如线程的总大小、实例数和堆栈跟踪。
“包”选项卡按包显示所有对象的细分。这可以帮助您快速识别哪个子系统造成了大部分内存消耗和可能的内存泄漏。
对象视图
对象视图显示按保留大小排序的类实例。
您可以通过双击“类”选项卡上的项目来打开视图。您还可以右键单击某个项目并选择在新选项卡中打开或按。Enter
对于每个类实例,有几个选项卡可让您计算和显示以下信息:
最短路径:到垃圾收集器根的最短引用链。
传入引用:来自其他实例的传入引用。
Dominators:允许您查看哪些对象保留特定实例(防止它们被垃圾收集)。每个实例只有一个支配者或者没有。
保留对象:旭日图,显示保留对象如何影响特定对象的保留大小。
支配树:保留对象的树。它允许您查看通过删除对特定对象的引用可以回收多少内存,以及哪些特定对象将与其一起被垃圾收集。
生产力技巧
- 使用快速搜索
在“类”选项卡和“对象”视图中,您可以使用快速搜索。
开始输入类名。当您键入时,“搜索”字段会出现在工具窗口上方,显示输入的字符,并且选择将移动到与指定名称匹配的第一个项目。有关更多信息,请参阅工具窗口中的速度搜索。
感谢您的反馈意见!