深入理解Java虚拟机

03垃圾收集器与内存分配策略

学习《深入理解Java虚拟机》,感谢作者!

代码清单3-9 -XX:MaxTenuringThreshod=1说明 #

Eden[8M]Survivor1[1M]Survivor2[1M]Old {10M}
初始allocation1[0.25M],allocation2[4MB]
3执行时gc导致的变化+allocation1[0.25M]+allocation2[4MB]
3执行后+allocation3[4MB]+allocation1[0.25M]+allocation2[4MB]
5执行时gc导致的变化allocation2[4MB],+allocation1[0.25M]
5执行后+allocation3[4MB]allocation2[4MB],+allocation1[0.25M]

代码清单3-9 -XX:MaxTenuringThreshod=15说明 #

Eden[8M]Survivor1[1M]Survivor2[1M]Old {10M}
初始allocation1[0.25M],allocation2[4MB]
3执行时gc导致的变化+allocation1[0.25M]+allocation2[4MB]
3执行后+allocation3[4MB]+allocation1[0.25M]+allocation2[4MB]
5执行时gc导致的变化+allocation1[0.25M]allocation2[4MB]
5执行后+allocation3[4MB]+allocation1[0.25M]allocation2[4MB],+allocation1[0.25M]

代码清单3-10 说明 #

Eden[8M]Survivor1[1M]Survivor2[1M]Old {10M}
初始allocation1[0.25M],
allocation2[[0.25M],allocation3[4M]
4执行时gc导致的变化+allocation1[0.25M],
+allocation2[[0.25M],
+allocation3[4MB]
4执行后+allocation4[4MB]+allocation1[0.25M],
+allocation2[[0.25M],
+allocation3[4MB]
6执行时gc导致的变化allocation3[4MB],
+allocation1[0.25M],
+allocation2[[0.25M],
6执行后+allocation4[4MB]allocation3[4MB],
+allocation1[0.25M],
+allocation2[[0.25M],

代码清单3-11 说明 #

-XX:-HandlePromotionFailure 关 #

Eden[8M]Survivor1[1M]Survivor2[1M]Old {10M}
初始allocation1[2M],
allocation2[2M],
allocation3[2M]
allocation1[null],allocation4[2M]
5执行时gc导致的变化+allocation2[2M],+allocation3[2M] //总共4M
5执行后+allocation4[2M]+allocation2[2M],+allocation3[2M] //总共4M
6->11allocation4[2M]
+allocation5[2M],
+allocation6[2M]
allocation2[2M],
allocation3[2M] //总共4M,
此时老年代连续可用空间在6M(或者说小于6M)
11执行时gc导致的变化allocation3[4MB],
+allocation1[0.25M],
+allocation2[[0.25M],
11执行后+allocation7[2MB]allocation3[4MB],
+allocation1[0.25M],
+allocation2[[0.25M],

说明 #

  1. 书籍版权归著者和出版社所有

    ...