1、当发生minor gc进行新生代垃圾回收时,为什么需要内存分配担保
假如eden可剩下2M内存分配,此时申请一个3MB的空间,此时空间不够,JVM将出发一次minor gc。这时就有两种情况:
1、新生代中的内存可以被回收(可达性分析后),此时回收之后,能够容纳3mb,那么就能执行成功
2、新生代的内存全部都被引用,那么就不能被回收,所以jvm会让老年代进行内存分配担保,就是因为新生代内存不够用了,也不能够被回收。此时老年代的所有可用连续内存空间大于新生代的已用空间的话,将所有新生代的内存全部移入老年代,此时就不会报错。此时新生代的占用内存就为3mb
JVM内存分配记录
最新推荐文章于 2024-12-17 15:38:07 发布