GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
● 标记清除: 先标记,标记完毕之后再清除,效率不高,会产生碎片 。
● 复制: 是将可用内存分成大小相等的两块,每次只使用其中的一块,当用完一块内存时,将还存活着的对象复制到另外一块内存,然后把已使用过的内存空间一次清理掉。使用简单,运行高效,用在新生代的GC。
● 标记整理: 标记完毕之后,让所有存活的对象向一端移动。
优化的话,暂时想到的就是通过减少 GC 的次数来优化,下次再补吧。*
Minor GC 与 Full GC 分别在什么时候发生?
新生代内存不够用时候发生 MGC 也叫 YGC(Minor GC / Young GC),JVM 内存不够的时候发生 FGC 。
简述 java 垃圾回收机制?
在 java 中,程序员是不需要显式地去释放一个对象的内存的,而是由虚拟机自行执行。在 JVM 中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫描那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。
简述 java 类加载机制
虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的 java 类型。