JVM调优(2)

本文深入探讨了JVM的CMS垃圾回收器及其问题,包括内存碎片和浮动垃圾。同时,介绍了JVM调优的关键参数,并提到了用于优化的工具。此外,讲解了G1垃圾回收器的并发标记算法和分区域思想,强调了其在解决内存管理上的创新。
摘要由CSDN通过智能技术生成

目录

垃圾回收器CMS

CMS的问题:

JVM调优

JVM常用命令行参数

吞吐量和响应时间

调优工具

垃圾回收器G1

G1的原理模型

并发标记算法


参考博文:https://blog.csdn.net/darkness0604/category_9840308.html

垃圾回收器CMS

CMS的问题:

参考文档:CMS收集器产生的问题和解决方案 - hongdada - 博客园

1,内存碎片化  2,浮动垃圾

1,CMS回收器采用的基础算法是Mark-Sweep,这个算法是会产生碎片的,一旦老年代的垃圾碎片多了,年轻代的就进不来了,然后就会启动paraller old回收器慢慢回收

2,CMS的并发清理会产生浮动垃圾(cms无法在本次gc清除掉,这些就是浮动垃圾)

JVM调优

JVM常用命令行参数

  1. 区分概念:内存泄漏memory leak,内存溢出out of memory

  2. java -XX:+PrintCommandLineFlags HelloGC

  3. java -Xmn10M -Xms40M -Xmx60M -XX:+PrintCommandLineFlags -XX:+PrintGC HelloGC PrintGCDetails PrintGCTimeStamps PrintGCCauses

  4. java -XX:+UseConcMarkSweepGC -XX:+PrintCommandLineFlags HelloGC

  5. java -XX:+PrintFlagsInitial 默认参数值

  6. java -XX:+PrintFlagsFinal 最终参数值

  7. java -XX:+PrintFlagsFinal | grep xxx 找到对应的参数

  8. java -XX:+PrintFlagsFinal -version |grep GC

我们一般是把堆的最小内存大小Xms和最大内存大小Xmx设置成一样大,避免每次垃圾回收完成后JVM重新分配内存。

吞吐量和响应时间

调优工具

jvisualVM中判断内存溢出的的一个很重要的界面

垃圾回收器G1

G1的原理模型

分而治之的垃圾回收思想,之前我们学过的JVM内存模型分为新生代 + 老年代 + 永久代(1.7)Perm Generation/ 元数据区(1.8) Metaspace。G1把内存分为一小块一小块的区域Region,这些区域在逻辑上也是分代的:Eden、Survivor、Old,与之前的分代模型完全不同。

并发标记算法

(CMS和G1的核心都是并发标记-通俗的来讲就是一边干活一边产生垃圾,算法是一样的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值