Java核心面试知识点详解:JVM、线程、垃圾回收算法等

需积分: 5 0 下载量 93 浏览量 更新于2024-06-20 收藏 8.96MB DOCX 举报
JAVA核心面试知识整理 JAVA核心面试知识整理是面试中常见的知识点总结,涵盖了JVM、线程、JVM内存区域、垃圾回收与算法、JAVA四中引用类型、GC分代收集算法VS分区收集算法、GC垃圾收集器等方面的知识点。 **JVM** JVM(Java Virtual Machine)是可运行Java代码的假想计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收、堆和一个存储方法域。JVM是运行在操作系统之上的,它与硬件没有直接的交互。 JVM的运行过程是:Java源文件通过编译器生成相应的.Class文件,也就是字节码文件,而字节码文件又通过Java虚拟机中的解释器,编译成特定机器上的机器码。 **JVM内存区域** JVM内存区域包括程序计数器、虚拟机栈、本地方法区、堆、方法区/永久代等。 * 程序计数器(线程私有):记录当前线程执行的字节码指令的地址。 * 虚拟机栈(线程私有):存储当前线程执行的方法调用和返回值。 * 本地方法区(线程私有):存储本地方法的信息。 * 堆(Heap-线程共享):存储Java对象的实例。 * 方法区/永久代(线程共享):存储类的元数据和常量池等信息。 **垃圾回收与算法** 垃圾回收是JVM中的一种机制,用于回收不再使用的对象所占用的内存空间。垃圾回收算法包括: * 引用计数法:通过计数对象的引用次数来判断对象是否可以被回收。 * 可达性分析:通过判断对象是否可以被GC Roots对象引用来判断对象是否可以被回收。 * 标记清除算法(Mark-Sweep):标记所有可达对象,然后清除不可达对象。 * 复制算法(copying):将可达对象复制到另外一个内存区域,然后清除原来的内存区域。 * 标记整理算法(Mark-Compact):标记所有可达对象,然后将可达对象移动到内存区域的起始位置。 **JAVA四中引用类型** JAVA中有四种引用类型: * 强引用:强引用是最常见的一种引用类型,垃圾回收器不会回收强引用的对象。 * 软引用:软引用是一种弱引用,垃圾回收器可能会回收软引用的对象。 * 弱引用:弱引用是一种弱引用,垃圾回收器可能会回收弱引用的对象。 * 虚引用:虚引用是最弱的一种引用类型,垃圾回收器可能会回收虚引用的对象。 **GC分代收集算法VS分区收集算法** GC分代收集算法将堆分为新生代和老年代,新生代使用复制算法,老年代使用标记整理算法。分区收集算法将堆分为多个小的内存区域,每个区域使用不同的垃圾回收算法。 **GC垃圾收集器** GC垃圾收集器包括: * Serial垃圾收集器(单线程、复制算法) * ParNew垃圾收集器(Serial+多线程) * ParallelScavenge收集器(多线程复制算法、高效) * SerialOld收集器(单线程标记整理算法) * ParallelOld收集器(多线程标记整理算法) * CMS收集器(多线程标记清除算法) JAVA核心面试知识整理涵盖了JVM、线程、JVM内存区域、垃圾回收与算法、JAVA四中引用类型、GC分代收集算法VS分区收集算法、GC垃圾收集器等方面的知识点,是面试中非常重要的知识点。