你能回答我一个关于 JVM 垃圾收集过程的问题吗?
为什么堆被划分为Eden、Survivor 空间和Old Generation?
当一个年轻的疏散被处理时,通过从根开始的引用来访问对象以找出无法访问的对象。可到达的对象被标记为“活着”,不可到达的对象不被标记并将被消除。
结果,所有对象都被考虑,包括在老年代分配的对象也被访问并标记,如果它们是可达的。
据我所知,同时回收年轻代和老年代是很困难的,因为这些代位于内存的不同连续部分。
但是,如果即使在 Young 疏散级别上最简单的标记之后,如果所有可到达和不可到达的对象都是已知的并且可以删除,我们仍然拥有包含所有活动和死对象的整个位图,为什么我们需要这种划分?
我也知道弱世代假设,但为什么我们需要划分?