堆内存结构及GC触发条件
所属分类 java
浏览量 1334
堆内存结构
新生代 老年代 持久代(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个万能短语