1.Heap Dump(java 堆dump文件)
Heap Dump代表的是java处理器(jvm)在特定时间点对应的内存快照(如出现OutOfMemoryError的时候)。根据生成dump文件时指定的格式以及采用的jvm类型,dump文件中可能会包含着不同的信息,但通常来说,里面都会包含在快照生成时java heap中的类和对象。在一般情况下,在触发快照生成前都会有一个Full GC处理,所以dump文件中只会保留无法被垃圾回收机制回收的对象。
在大多数情况下dump中包含如下内容
- 所有的对象
类、字段、原生数据(int、double等)、引用
- 所有的类
类加载器、名称、超类、静态字段
- 垃圾回收根对象
指能通过jvm到达的对象(后面会详细说明)
- 线程栈河本地变量
快照生成时所有线程中的堆栈信息、本地变量的桢信息
dump文件中不包含对象地址的分配信息,所以不能通过dump文件分析出对象是被哪个对象创建的,也无法查出对象是在什么时候创建的。
2.Shallow Heap 和 Retained Heap
- Shallow heap 代表的是对象X自身占用的内存,如一个引用占用32或64bit,一个integer占4byte等。
- Retained set 代表的是对象X被垃圾回收器回收后能被GC从内存中移除的所有对象集合,例如在对象树中Y只能通过X才能访问到,那么Y就是属于X的Retained set中的一员。
- Retained heap 代表的是对象X对应的Retained set中所有对象的Shallow heap之和,也就是由于对象X的存在而占用的内存大小
- leading set 一个对象集合的Retained set(例如一个特定类的所有对象集、一个特定类加载器加载的类对应对象集)指的是当这些对象集合中的对象都变的不可访问时释放的总的对象集合,因此这个Retained set即包含这个对象集合中的对象,也包含哪些只能通过这个集合中的对象才能访问的对象。对象的Retained heap就是这个Retained set中的所有对象的Shallow Heap。
总的来说,一个对象的shallow heap就是这个对象自身在堆中的大小而同一个对象的Retained heap就是这个对象被GC回收后释放的总的内存大小。而leading set 就是这个集合中所有对象对应的Retained set。
下面用一张图来说明
其中A和B是GC root对象,如方法参数对象,本地创建的native对象,用来执行wait()、notify()、synchronized()方法的对象等。
leading set | Retained set |
G | G |
E1,E2 | E1,E2,G,I |
C | C,D,E1,E2,F,G,H,I |
A,B | A,B,C,D,E1,E2,F,G,H,I |
3.Dominator Tree
MAT提供一个heap dump中的对象树对应的Dominator Tree,通过将对象树转换成Dominator Tree能帮助我们快速的发现占用内存最大的块,也能帮我们分析对象之间的依赖关系。几个术语定义如下
- 对象X Dominator(支配)对象Y,当且仅当在对象树中所有到达Y的路径都必须经过X
- 对象Y的直接Dominator,是指在对象树中距离Y最近的Dominator
- Dominator tree利用对象树构建出来。在Dominator tree中每一个对象都是他的直接Dominator的子节点。
Dominator tree具有下面几个主要属性
- 对象X的sub-tree(被X 支配的对象)代表着X的Retained set
- 如果X直接支配着Y对象,那么X的直接支配者也支配着Y对象,依次类推
- Dominator tree并不直接对应着对象树中的引用关系
对象树和Dominator tree的对应关系如下
4.Garbage Collection Roots(GC root)
一个GCroot指的是可以从堆外部访问的对象,有以下原因可以使一个对象成为GCroot对象
- System Class
通过bootstrap/system 类加载器加载的类,如rt.jar中的java.util.*
- JNI Local
Local variable in native code, such as user defined JNI code or JVM internal code.
- JNI Global
Global variable in native code, such as user defined JNI code or JVM internal code.
- Thread Block
Object referred to from a currently active thread block.
- Thread
一个启动的还没有停止的线程
- Busy Monitor
调用了wait()、notify()方法,或者是同步对象,例如调用synchronized(Object) 或者进入一个synchronized方法后的当前对象
- Java Local
本地变量,例如方法的输入参数或者是方法内部创建的仍在线程堆栈里面的对象
- Native Stack
In or out parameters in native code, such as user defined JNI code or JVM internal code. This is often the case as many methods have native parts and the objects handled as method parameters become GC roots. For example, parameters used for file/network I/O methods or reflection.
- Finalizable
An object which is in a queue awaiting its finalizer to be run.
- Unfinalized
An object which has a finalize method, but has not been finalized and is not yet on the finalizer queue.
- Unreachable
An object which is unreachable from any other root, but has been marked as a root by MAT to retain objects which otherwise would not be included in the analysis.
- Java Stack Frame
A Java stack frame, holding local variables. Only generated when the dump is parsed with the preference set to treat Java stack frames as objects.
- Unknown

- 大小: 8.2 KB

- 大小: 20.9 KB
分享到:
相关推荐
Rocky Linux 8.10内核包
内容概要:本文档详细介绍了如何在Simulink中设计一个满足特定规格的音频带ADC(模数转换器)。首先选择了三阶单环多位量化Σ-Δ调制器作为设计方案,因为这种结构能在音频带宽内提供高噪声整形效果,并且多位量化可以降低量化噪声。接着,文档展示了具体的Simulink建模步骤,包括创建模型、添加各个组件如积分器、量化器、DAC反馈以及连接它们。此外,还进行了参数设计与计算,特别是过采样率和信噪比的估算,并引入了动态元件匹配技术来减少DAC的非线性误差。性能验证部分则通过理想和非理想的仿真实验评估了系统的稳定性和各项指标,最终证明所设计的ADC能够达到预期的技术标准。 适用人群:电子工程专业学生、从事数据转换器研究或开发的技术人员。 使用场景及目标:适用于希望深入了解Σ-Δ调制器的工作原理及其在音频带ADC应用中的具体实现方法的人群。目标是掌握如何利用MATLAB/Simulink工具进行复杂电路的设计与仿真。 其他说明:文中提供了详细的Matlab代码片段用于指导读者完成整个设计流程,同时附带了一些辅助函数帮助分析仿真结果。
内容概要:该题库专为研究生入学考试计算机组成原理科目设计,涵盖名校考研真题、经典教材课后习题、章节题库和模拟试题四大核心模块。名校考研真题精选多所知名高校的计算机组成原理科目及计算机联考真题,并提供详尽解析,帮助考生把握考研命题趋势与难度。经典教材课后习题包括白中英《计算机组成原理》(第5版)和唐朔飞《计算机组成原理》(第2版)的全部课后习题解答,这两部教材被众多名校列为考研指定参考书目。章节题库精选代表性考题,注重基础知识与重难点内容,帮助考生全面掌握考试大纲要求的知识点。模拟试题依据历年考研真题命题规律和热门考点,精心编制两套全真模拟试题,并附标准答案,帮助考生检验学习成果,评估应试能力。 适用人群:计划参加研究生入学考试并报考计算机组成原理科目的考生,尤其是需要系统复习和强化训练的学生。 使用场景及目标:①通过研读名校考研真题,考生可以准确把握考研命题趋势与难度,有效评估复习成效;②通过经典教材课后习题的练习,考生可以巩固基础知识,掌握解题技巧;③通过章节题库的系统练习,考生可以全面掌握考试大纲要求的各个知识点,为备考打下坚实基础;④通过模拟试题的测试,考生可以检验学习成果,评估应试能力,为正式考试做好充分准备。 其他说明:该题库不仅提供详细的题目解析,还涵盖了计算机组成原理的各个方面,包括计算机系统概述、数据表示与运算、存储器分层、指令系统、中央处理器、总线系统和输入输出系统等。考生在使用过程中应结合理论学习与实践操作,注重理解与应用,以提高应试能力和专业知识水平。
__UNI__DB9970A__20250328141034.apk.1
rust for minio
国网台区终端最新规范
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
一个简单的机器学习代码示例,使用的是经典的鸢尾花(Iris)数据集,通过 Scikit-learn 库实现了一个简单的分类模型。这个代码可以帮助你入门机器学习中的分类任务。
pyqt离线包,pyqt-tools离线包
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
SQL常用日期和时间函数整理及在sqlserver测试示例 主要包括 1.查询当前日期GETDATE 2.日期时间加减函数DATEADD 3 返回两个日期中指定的日期部分之间的差值DATEDIFF 4.日期格式转换CONVERT(VARCHAR(10),GETDATE(),120) 5.返回指定日期的年份数值 6.返回指定日期的月份数值 7.返回指定日期的天数数值
GSDML-V2.3-Turck-BL20_E_GW_EN-20160524-010300.xml
T_CPCIF 0225-2022 多聚甲醛.docx
《基于YOLOv8的智能仓储货物堆码倾斜预警系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
蚕豆脱壳机设计.zip
台区终端电科院送检文档
Y6一39一No23.6D离心通风机 CAD().zip
django自建博客app
台区终端电科院送检文档
非开挖水平定向钻机动力头装置设计.zip