首页  

堆内存结构及GC触发条件     所属分类 java 浏览量 1142
堆内存结构

新生代 老年代 持久代(JDK1.8之后被废弃 使用 被元数据区取代)
Young 
old/tenure
permanent

Young=eden+SurvivorFrom+SurvivorTo

新生代 GC   Minor GC Young GC

老年代满 Major GC   并发GC+整堆扫描 Full GC

堆参数设置

堆大小设置 -Xms2g  -Xmx2g
年轻代大小 -Xmn256m
持久代大小 -XX:Permsize=512m -XX:MaxPermsize=512m
jdk8以后 元数据区大小 -XX:MetaspaceSize=512m  -XX:MaxMetaspaceSize=512m 
直接内存 -XX:MaxDirectMemorySize=1024M
虚拟机栈大小 -Xss256K
-XX:NewRatio=N
-XX:SurvivorRatio=N
-XX:MaxTenuringThreshold=30 晋升老年代的年龄
-XX:PretenureSizeThreshold=N  直接晋升老年代的对象大小 



Minor GC ,Full GC 触发条件

Minor GC触发条件: Eden区满

Full GC触发条件:

调用System.gc,系统建议执行Full GC,不一定执行
老年代空间不足
方法区空间不足
通过Minor GC后进入老年代的平均大小大于老年代的可用内存
由Eden区、From Space区向To Space区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小
对象晋升失败 提升失败Promotion Failure
cms并发模式失败 concurrent mode failure

上一篇     下一篇
程序员段子合集

理性客观看待区块链的应用前景

如何在10亿个长整数中找出前1000最大的数

G1垃圾收集器jvm参数

G1的两种GC模式

英语写作中常用的45个万能短语