【JAVA】 jvm 新生代内存不足的对象内存区域转移
package pres.ndz.simple;
public class App {
private static final int _1MB = 1024*1024;
/**
* -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
*
* -Xmn10M 规定新生代大小为10M
* -XX:SurvivorRatio=8 新生代和存活区存活比例8:1
*/
public static void main(String[] args) {
byte[] allocation1, allocation2, allocation3, allocation4;
allocation1 = new byte[2 * _1MB];
allocation2 = new byte[2 * _1MB];
allocation3 = new byte[2 * _1MB];
allocation4 = new byte[4 * _1MB];
// allocation4 jvm 会发现新生代内存不足 此时会进行jc (Minor GC 指新生代GC)
// 发生 jc时又发现3个2MB 的对象无法全部放到 存活区(存活区1M)
// 从而会将allocation1, allocation2, allocation3担保到老年代
// 结论: 当新生代内存不足 对象的内存位置转移顺序 新生代->存活区->老年代
}
}
“年轻时,我没受过多少系统教育,但什么书都读。读得最多的是诗,包括烂诗,我坚信烂诗早晚会让我邂逅好诗。”
by. 马尔克斯