面试题
(1)内存泄漏 与 内存溢出区别
内存泄漏指无用对象长期得不到回收,持续占用空间,造成浪费。
内存泄漏可能导致内存溢出。
(2)CMS与G1区别
CMS用于老年代回收,G1分代回收;
CMS采用标记-清除,G1采用标记整理;
G1对堆内存按Region进行划分,减少了空间碎片的产生;
G1自定义停顿时间,CMS以最短垃圾回收时间为目标。
(3)区分新生代老年代
根据年代特点选择合适的垃圾收集算法。
(4)方法区的回收
回收无用的类。
- 堆中不存在任何该类的实例
- 该类的类加载器ClassLoader被回收
- 类对应的java.lang.Class没有被引用