如何理解jvm的eden和survivor区,以及gc34
发布网友
发布时间:2023-10-08 20:47
我来回答
共1个回答
热心网友
时间:2024-12-13 03:34
要理解eden和survivor区,先要知道垃圾收集算法中的 复制算法。
复制算法:将区域分成两部分,其中一部分作为保留空间,另一部分作为使用空间、当发生垃圾回收时,首先检查使用空间里有哪些对象是存活的,检查完之后把存活的对象复制到保留空间(这样复制过来的好处是减少了内存碎片,如果直接在使用空间清除的话,那空间会很零散)里,然后清洗使用空间。
这个eden就相当于是使用空间,survivor就相当于是保留空间,通常情况下eden会比survivor大的多,因为eden和survivor都是属于新生代(还有老生代,jvm 将堆分为新生代和老生代),新生代里的对象一般都是朝生夕死,所以活下来的不多,所以保留空间小一些就好了。
GC就是垃圾回收了,是java语言的一大特点,我们生成的对象空间不需要自己手动去释放,jvm自有GC线程来帮我们清理不用的对象。