jvm内存模型如下图
垃圾回收:
方法区: 这部分的垃圾回收性价比低,一般不要求回收,暂认为是永久代
heap:新生代和永久代之分。永久代主要回收废弃常量和无用的类。
垃圾回收算法:
1. 标记-清除算法
标记判断: a) 该类所有实例都已经被回收,也就是heap中,不存在该类任何实例。
b) 加载该类的ClassLoader已经被回收
c) 该类对应的java.long.Class对象没有任何地方被引用,无法在任何地方通过反射访问该类的方法。
问题:1. 效率不高 2.空间问题,造成大量不连续内存碎片。
2. 复制算法
内存按容量划成相等的两块,每次只使用其中一块,当这块内存用完,就将还存活的对象都复制到另一块。在把之前使用的内存清理。
问题:内存空间缩小为原来的一半。
3.