堆
堆的核心概述
堆的内存细分 新生代,老年代,元空间(1.8以后)
设置堆内存大小
-Xms 堆空间初始值大小 -Xmx堆空间最大值
代码方式查看
打印信息
OOM举例
old区满了 会OOM
年轻代与老年代
新老生代 默认比例
伊甸园区和幸存者区比例
对象分配过程
图解对象分配过程
to区作用:下次GC的时候伊甸园区的数据存放位置。
默认经历15次GC之后(也有特殊情况),如果还在使用就要放到old区
注意:幸存者区不会触发YGC或MinorGC,只有区满了才会把幸存者区一起回收,被动回收。
总结
特殊情况
常用调优工具
Minor GC 、 Major GC 与 Full GC
Minor GC触发机制
Major GC/Full GC 触发机制
堆空间分代思想
内存分配策略
对象分配过程 TLAB
Thread Local Allocation Buffer
堆空间参数设置小结
堆是对象存储的唯一选择吗?
逃逸分析
如何判断是否发现了逃逸分析,就看方法里new的对象是否在方法外被调用
逃逸分析:代码优化
1.栈上分配
2.同步省略
3.分离对象或标量替换