摘要:目录往期博客课堂篇初识常量池简单理解字符串常量池静态常量池大整型常量池为什么要了解垃圾收集和内存分配如何判断对象已死引用计数算法可达性分析算法之后引用的扩充回收方法区垃圾收集算法分代收集理论标记清除标记复制标记整理对象分
当需要排查各种内存溢出、内存泄露问题时,当垃圾收集成为系统达到高并发量的瓶颈时,我们必须对这些“自动化”的技术实
施必要的监控和调节。
四种新扩充的引用
Object o = new Object()
,只要强引用的关系还在,垃圾收集器就永远不会回收掉被引用的对象垃圾收集算法可以划分为
分代收集设计原则
因此存在
算法分为 标记 和 清除 两个阶段
缺点
相比标记清除算法
半区复制分代策略
相比于新生代使用标记复制算法、标记清除算法
特点
对象的内存分配从概念上讲都是堆上分配,(实际可能有即时编译后被拆散为标量类型并间接的在栈上分配),在经典分代的设计下,新生对象会直接分布在新生代,一些超过阈值的大对象可以直接分布在老年代
-XX:PretenureSizeThreshold=3145728
参数指定阈值-XXMaxTenuringThreshold
设置-XX:HandlePromotionFailure
参数是否允许担保失败,如果允许,则会检查老年代可用连续空间是否大于历届上升到老年代对象年龄的平均大小 -XX:handlePromotionFailure
设置不允许冒险,这时候就需要进行一次FullGCjsp:虚拟机进程状况工具
虚拟机进程查看定位工具
jstat:虚拟机统计信息监视工具
显示类加载、内存、垃圾收集器、即时编译等运行时数据,定位虚拟机性能问题
参数参考:https://blog.csdn.net/ouyang111222/article/details/53688986
jinfo:Java配置信息工具
jmap:Java内存映像工具
用于生成堆转储快照
jhat:虚拟机堆转储快照分析工具
jstack:Java堆栈跟踪工具
jcmd:Java7开始提供的虚拟机诊断命令工具
基本Java工具
jhsdb hsdb --pid xxx
进行操作文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/119751.html
摘要:虚拟机性能监控与故障处理工具详解概述本文参考的是周志明的深入理解虚拟机第四章,为了整理思路,简单记录一下,方便后期查阅。虚拟机堆转储快照分析工具功能用于分析生成的。 虚拟机性能监控与故障处理工具 详解 4.1 概述 本文参考的是周志明的 《深入理解Java虚拟机》 第四章 ,为了整理思路,简单记录一下,方便后期查阅。 JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的Vis...
摘要:虚拟机发展史注本文大部分摘自深入理解虚拟机第二版作为一名开发人员,不能局限于语言规范,更需要对虚拟机规范有所了解。虚拟机规范有多种实现,其中是和中所带的虚拟机,也是目前使用范围最广的虚拟机。世界第一款商用虚拟机。号称世界上最快的虚拟机。 Java虚拟机发展史 注:本文大部分摘自《深入理解Java虚拟机(第二版)》 作为一名Java开发人员,不能局限于Java语言规范,更需要对Java虚...
摘要:当两个对象相互引用时,这两个对象就不会被回收引用计数算法不被主流虚拟机采用,主要原因是它很难解决对象之间相互循环引用的问题。 垃圾收集器与内存分配策略 详解 3.1 概述 本文参考的是周志明的 《深入理解Java虚拟机》第三章 ,为了整理思路,简单记录一下,方便后期查阅。 3.2 对象已死吗 在垃圾收集器进行回收前,第一件事就是确定这些对象哪些还存活,哪些已经死去。 3.2.1 引用...
摘要:第章内存区域与内存溢出异常运行时数据区域虚拟机在执行程序的过程中会把它所管理的内存划分为若干个不同的数据区域。即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。 第2章 Java内存区域与内存溢出异常 2.2 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。根据《Java虚拟机规范(Java SE 7版)...
阅读 2984·2021-09-10 10:50
阅读 3188·2019-08-30 14:19
阅读 3514·2019-08-29 17:31
阅读 3240·2019-08-29 16:43
阅读 2190·2019-08-29 14:05
阅读 2087·2019-08-29 13:17
阅读 2040·2019-08-26 13:25
阅读 1755·2019-08-26 12:20