file-type

Java面试必备:JVM内存与垃圾回收深度解析

PDF文件

下载需积分: 14 | 10.6MB | 更新于2024-07-09 | 27 浏览量 | 8 下载量 举报 收藏
download 立即下载
"JAVA核心面试知识整理.pdf" Java面试中,深入理解JVM(Java虚拟机)是必不可少的。这份资料详细梳理了JVM相关的高频面试知识点,包括JVM内存区域、垃圾回收机制以及各种垃圾收集算法。 1. JVM内存区域: - 程序计数器:每个线程都有自己的程序计数器,记录当前线程执行的字节码指令地址。 - 虚拟机栈:同样为线程私有,用于存储局部变量表、操作数栈、动态链接和方法出口等信息。 - 本地方法区:用于支持native方法的执行,线程私有。 - 堆:所有线程共享的区域,用来存储对象实例和数组,是GC的主要区域。 - 方法区/永久代:存储类信息、常量、静态变量等,Java 8后被元空间取代。 2. JVM运行时内存细分: - 新生代:分为Eden区、SurvivorFrom区和SurvivorTo区,主要存放新创建的对象,采用Minor GC进行垃圾回收。 - 老年代:存放存活时间较长的对象,进行Major GC。 - 永久代/元空间:存储加载的类信息、常量、静态变量等,Java 8以后元空间代替了永久代。 3. 垃圾回收与算法: - 确定垃圾的方法:引用计数法和可达性分析,其中可达性分析是现代JVM普遍采用的方法。 - 垃圾回收算法包括: - 标记清除:标记无用对象并进行清理,但会导致内存碎片。 - 复制算法:将内存分为两部分,每次只使用一部分,效率高但浪费空间。 - 标记整理:标记后将存活对象向一端移动,再清理边界外的区域。 - 分代收集算法:根据对象生命周期将内存分为新生代和老年代,使用不同的算法。 4. JAVA四种引用类型: - 强引用:默认的引用类型,只要对象被强引用,就不会被GC回收。 - 软引用:当系统内存不足时,会回收软引用的对象。 - 弱引用:任何时候只要GC,都会回收弱引用的对象。 - 虚引用:对象是否存活对GC无影响,主要用于跟踪对象被GC回收的活动。 5. GC分代收集算法与分区收集算法: - 分代收集算法:针对不同生命周期的对象使用不同的算法,如新生代使用复制算法,老年代使用标记整理算法。 - 分区收集算法:将堆内存划分为多个小的区域,独立进行垃圾回收,提高并发性能。 6. GC垃圾收集器: - Serial收集器:单线程执行,适用于轻量级应用。 - ParNew收集器:Serial收集器的多线程版本,常与CMS配合使用。 - ParallelScavenge收集器:优化了吞吐量,适合后台服务器应用。 - SerialOld收集器:单线程标记整理算法,作为Serial收集器的老年代版本。 这些知识是Java面试中常见的问题,理解并掌握它们能帮助你在面试中自信应对关于JVM的挑战。

相关推荐

猿小许
  • 粉丝: 1066
上传资源 快速赚钱