JVM-GC种类及触发机制

11 篇文章 1 订阅

具体JAVA_OPTS参数详解:

-Xms2000m -Xmx2000m -Xmn800m -XX:PermSize=64m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=15

Xms表示jvm启动时的初始堆大小,Xmx为最大堆大小,Xmn为新生代的大小

PermSize为永久带的初始大小,MaxPermSize为永久代的最大空间

MaxTenuringThreshold为达到这个值,对象就会被移进老年代

jdk1.8生产参数配置参考:

JAVA_OPTS="-server -Xmx9g -Xms9g -Xmn3g -Xss500k -XX:+DisableExplicitGC -XX:MetaspaceSize=2048m -XX:MaxMetaspaceSize=2048m -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -Dfile.encoding=UTF8 -Duser.timezone=GMT+08

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/app/logs/crm-heapdump.hprof"

GC种类:

1、老年代中采用标记-清除算法的Full GC(或称为Major GC)

2、新生代中采用复制算法的Minor GC

新生代是GC收集垃圾的频繁区域,默认对象在survivor中每熬过15次(可配置)Minor GC时,就会被晋升到老年代中。

Full GC发生的次数不会有Minor GC那么频繁,并且做一次Full GC要比进行一次Minor GC耗时更长。

在程序中,每次调用System.gc(),是先进行Minor GC,然后再进行Full GC

新生代--新创建的对象

老年代--经过多次Minor GC和Full GC回收,而没有被回收的对象或者大对象

永久代--jvm加载的类文件信息,常量,静态变量等。

触发Full gc条件:

1.调用System.gc

2.老年代空间不足

3.永久代空间不足

4. gc 担保失败

参考资料:触发Full gc条件_scugxl的专栏-CSDN博客_full gc

java进程崩溃时,记录dump日志:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/app/logs/crm-heapdump.hprof

总结一下jvm采用分代垃圾回收方式的原因:

1.Java程序在运行的时候,大多数对象在创建后很快就没有对象使用它了。

2.大多数一直在被使用的对象很少再去引用新创建的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值