首页 > 其他分享 >shallow heap与remainder heap

shallow heap与remainder heap

时间:2023-11-20 17:11:22浏览次数:35  
标签:shallow 对象 OBJECT heap 大小 remainder

 

具有Heap Profiler功能的工具,如mat(memory analyse tool)、Google Heap Profiler、JProfiler等,经常会出现shallow heap与remainder heap,这两个词在我们的实际开发中基本没有出现过,那么我们在用mat解析dump出来的Java内存文件时,出现的这两个词究竟是什么意思呢?

shallow heap

shallow heap是对象本身的大小,不包括其引用的对象。
对于非数组类型:shallow heap就是对象与其成员变量加在一起的大小。
对于数组类型:shallow heap就是数组各个元素大小之和。

remainder heap

对象remainder heap 大小 = 对象shallow heap大小 + 对象直接或者间接引用的对象大小(排除被GC ROOT直接引用的对象)。
如下图所示:

 


  对象引用关系

OBJECT A的remainder heap = OBJECT A的shallow heap
OBJECT B的remainder heap = OBJECT B的shallow heap + OBJECT C的对象大小 + OBJECT E的对象大小

所以对象的remainder heap其实接近进行垃圾回收时,清除该对象时所能获取的堆内存大小(有的对象可能还被其他对象引用,垃圾回收时,不能清除)。

下面是用mat对从服务器上面dump出来Java虚拟机内存进行解析之后的结果:


 

 

Java内存解析结果

其中,Objects为类的对象的个数。Shallow Heap是这些对象自身大小之和,Remainder Heap是这些对象自身以及这些对象直接或者间接引用的对象大小总和。



作者:哪个旮旯的
链接:https://www.jianshu.com/p/def81f647ece
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

标签:shallow,对象,OBJECT,heap,大小,remainder
From: https://www.cnblogs.com/softidea/p/17844379.html

相关文章

  • 无涯教程-Dart - remainder函数
    在将两个数字相除后,它将返回截断的余数。remainder-语法Number.remainder(x)x-表示分隔线remainder-返回值返回除法的余数。remainder-示例voidmain(){vara=10;varb=17;print(a.remainder(2));print(b.remainder(2));}它将产......
  • GlibcHeap-house-of-muney分析
    目录GlibcHeap-house-of-muney分析前言利用原理ELF文件解析符号查找利用过程POC思考参考GlibcHeap-house-of-muney分析houseofmuney的学习笔记。前言遇到了好几次hosueofmuney相关的题目,之前并没有深入地分析houseofmuney的原理,只是了解了一个大概。这次详细分析一下......
  • jenkins Java heap space
    jenkinsJavaheapspace,是内存不够。 两个解决方案:一,修改配置文件windows系统中,找到Jenkins的安装路径,修改jenkins.xml将-Xmx256m改为-Xmx1024m或者更大重启jenkins服务。 二,jenkins增加全局配置(jenkins版本不一样,可能名称和菜单也会不一样。)系统配置--》全局......
  • java.lang.OutOfMemoryError: Java heap space 一次堆内存溢出异常处理
    问题:在获取人员信息同步到系统中时出现了错误 Javaheapspace,解决:堆内存溢出,在网上查询了诸多资料,解决办法都是增加JVM的内存:JAVA_OPTS="-server-Xms2048m-Xmx2048m-XX:PermSize=256M-XX:MaxNewSize=512m-XX:MaxPermSize=512m" ,尝试增加内存后还是失败     ......
  • Heap
    dg-publish:truestudy/datastructureAHeapisacompletebinarytree,wherealllevelsoftree,exceptPossiblythelastlevel,arefullyfilled![[Pastedimage20231023104516.png|300]]MinHeapAparentnodehasakeythatissmallerthanitschild......
  • springboot heapdump信息获取
    springboot信息泄露可能泄漏的路由/api-docs/v2/api-docs/swagger-ui.html/api.html/sw/swagger-ui.html/api/swagger-ui.html/template/swagger-ui.html/spring-security-rest/api/swagger-ui.html/spring-security-oauth-resource/swagger-ui.html/mappings/actua......
  • What causes "Invalid Address specified to RtlValidateHeap"?
    ForumVisualC++&C++ProgrammingVisualC++ProgrammingWhatcauses"InvalidAddressspecifiedtoRtlValidateHeap"?Ifthisisyourfirstvisit,besuretocheckoutthe FAQ byclickingthelinkabove.Youmayhaveto register or Login ......
  • Go - Creating Heaps
    Problem: Youwanttocreateaminheapdatastructure.Solution: Wrapastructaroundasliceofelementstorepresentaheap.Aftereachpushorpopontheheap,rearrangetheheapstructure. AHeapisaspecialTree-baseddatastructureinwhichthe......
  • Vue3中shallowReactive 与 shallowRef 的用法
    转自:https://blog.csdn.net/qq_54527592/article/details/119840044  shallowReactive与shallowRef   shallowReactive:只处理对象最外层属性的响应式(浅响应式)。   shallowRef:只处理基本数据类型的响应式,不进行对象的响应式处理。   什么时候使用?     ......
  • "堆"(Heap)和"栈"(Stack)两个重要的内存管理概念
    在Delphi和其他编程语言中,"堆"(Heap)和"栈"(Stack)是两个重要的内存管理概念,用于存储和管理程序中的数据和变量。它们有不同的特性和用途:堆(Heap):堆是一块动态分配的内存区域,用于存储对象、数据结构和变量。堆内存的分配和释放是由程序员手动控制的,通常使用New和Dispose(或GetMem和......