java虚拟机垃圾收集问题
在《深入理解java虚拟机》一书中的第三章垃圾收集器中讲述垃圾收集算法的标记-清除算法时提到:“标记清除之后会产生大量的不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作”,这里为什么要连续内存?逻辑上连续?
在“对象优先在Eden分配”中提到,当Eden区没有足够空间进行分配时,会触发一次Minor GC,这里为什么不是Eden+一个Suvivor区没有足够空间时再触发Minor GC,新生代分成Eden+2个Suvivor,如果Eden区没有空间就触发gc,那这个Suvivor区的作用是什么?为什么不直接分成Eden+1个Suvivor?