JVM之内存分配与回收策略

 上一篇文章了解了内存分代理论,这次来具体了解下内存分配和回收策略。

1 对象优先在Eden区分配

 大多数对象都在Eden区分配,当Eden区没有足够的空间时,会发起一次Minor GC。

1
2
3
4
5
6
7
8
9
10
11
/**
* -Xmn10M:设置年轻代大小为10M
* -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
*/
public static void testEden() {
byte[] a1, a2, a3, a4;
a1 = new byte[2 * _1M];
a2 = new byte[2 * _1M];
a3 = new byte[2 * _1M];
a4 = new byte[4 * _1M];//出现一次Minor GC
}

2 大对象直接进入老年代

3 长期存活的对象进入老年代

4 动态对象年龄判定

5 空间分配担保


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!