JVM
2022-02-25 12:05:00 8 举报
AI智能生成
JVM 学习的内容
作者其他创作
大纲/内容
默认占 80%
Eden区
默认占 10%
Survior 1区
Survior 2区
Survior区
线程私有的分配缓存区,以提升对象分配时的效率
是否使用 TLAB:-XX:+/-UseTLAB
TLAB(Thread Local Allocation Buffer)
对老年代空间大小做检查
默认打开,会进行第二步检查,
jdk1.6之后废弃
-XX:-HandlePromotionFailure
老年代可用空间 > 新生代对象总和
老年代可用空间 > 历次Minor GC升入老年代对象的平均大小
jdk1.6后默认判断规则
老年代空间分配担保规则
1.Minor GC过后,剩余的存活对象的大小,是小于Survivor区的大小的,那么此时存活对象进入Survivor区域即可
2.Minor GC过后,剩余的存活对象大小,是大于Survivor区域的大小,但是小于老年代可用内存的大小,此时就直接进入老年代即可
老年代有空间
3.很不幸,Minor GC过后,剩余的存活对象的大小,大于了Survivor区域的大小,也大于了老年代可用内存的大小,此时老年代都放不下这些存活对象了,就会触发一次“Full GC”
老年代无空间
设置多少岁进入老年代,默认15岁
-XX:MaxTenuringThreshold
躲过gc 15次,年龄达到15岁的对象
Survior区的一批对象总大小大于这块Survior区域的内存大小的50%,那么大于等于这批年龄的对象直接进入老年代
动态对象年龄判断
-XX:PretenureSizeThreshold
设置字节数,大于这个字节数的对象直接进入老年代
大对象直接进入老年代
进入老年代
Minor GC/Young GC
新生代
每次Full GC后都会产生大量的内存碎片,太多的内存碎片会导致增加频繁的Full GC
老年代
JVM堆内存
JVM
0 条评论
回复 删除
下一页