垃圾回收器:管理内存
(1)分配内存
(2)保留被引用内存(确保所有被引用的对象留在内存)
(3)释放内存(不被引用的内存)
垃圾回收的时间:堆耗尽或达到一个阈值
内存泄露:(应用程序)引用没了,(堆)内存没释放
垃圾回收算法的考虑:
(1)序列(Serial)---并行(Parallel)
是否在单CPU或多CPU上垃圾回收
(2)并发(Concurrent)---中止(Stop-the-world)
垃圾回收时,应用程序是并发执行还是中止应用程序
(3)紧缩(Compacting)---非紧缩(Non-compacting)---复制(Copying)
(确定了活对象和垃圾对象后)
紧缩:移动所有的活对象,回收剩下内存
非紧缩:直接回收垃圾对象
复制:复制活对象