学习笔记-JVM GC

1.GC分类

  • Partial GC

并不会收集整个堆空间,仅仅包括新生代和老年代,不包含永久代(元空间)。

  • Young GC :只收集 Young Gen的垃圾收集过程。

  • Old GC:只收集Old Gen的垃圾收集过程。(只有CMS的并发收集是这个模式)

  • Mixed GC:收集整个Young Gen以及部分Old Gen的垃圾收集过程。(只有G1有这个模式)

  • Full GC

  • 收集整个堆,包括Young Gen、Old Gen 以及 Perm Gen的模式。

2.GC触发

1. Minor GC–仅仅回收年轻代垃圾

  • 当young gen中的eden区分配满的时候触发。
  • 新创建的对象大小 > Eden所剩空间。

2.Full GC–回收整个堆空间

  • 每次晋升的老年代平均大小 > 老年代剩余空间。这是一个较为复杂的触发情况,Hotspot为了避免由于新生代对象晋升到旧生代导致旧生代空间不足的现象,在进行Minor GC时,做了一个判断,如果之前统计所得到的Minor GC晋升到旧生代的平均大小大于旧生代的剩余空间,那么就直接触发Full GC。
  • 老年代空间不足,老年代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象。
  • System.gc()方法的调用,此方法的调用是建议JVM进行Full GC,并非一定执行。
  • Perm Gen(永久代/元空间)空间不足,方法区也被称为永久代或者元空间,方法区中存放的为一些class的信息、常量、静态变量等数据,当系统中要加载的类、反射的类和调用的方法较多时,方法区可能会被占满,在未配置为采用CMS GC的情况下也会执行Full GC。
  • 堆中分配很大的对象大对象会直接进入老年代,而老年代虽然有很大的剩余空间,但是无法找到足够大的连续空间来分配给当前对象,此种情况就会触发JVM进行Full GC。XX:PretenureSizeThreshold 指定大于该数值的对象直接进入老年代,避免在新生代的Eden和两个Survivor区域来回复制,产生大量内存复制操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值