我正在学习Java内存管理,这是我从互联网上学到的。
当Eden空间已满时,Minor GC被触发,Minor GC会将仍被引用的对象复制到一个空的幸存空间,但该空间小于Eden,当eden充满活动对象时,收集器会做什么?AFAIK,Java GC收集器正在复制收集器,它应该将所有活动对象移走,然后清除旧的内存空间。
发布于 2020-09-23 22:57:27
次要GC在Eden空间已满时触发
几乎是正确的。当触发主要GC时,可以触发次要GC。就像GC说的:“我需要做一个完整的GC,但首先我会做一个小的”。在这种情况下(例如,G1就是这样做的),Eden space可能不会满。
当这种情况发生时(一些Eden区域无法完全疏散),这些区域就会变得陈旧,就像here所评论的那样
疏散失败的
区域始终是旧的...
https://stackoverflow.com/questions/64027972
复制相似问题