2026年24个jvm面试题总结及答案_第1页
2026年24个jvm面试题总结及答案_第2页
2026年24个jvm面试题总结及答案_第3页
2026年24个jvm面试题总结及答案_第4页
2026年24个jvm面试题总结及答案_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年24个jvm面试题总结及答案

一、单项选择题(总共10题,每题2分)1.以下哪个JVM内存区域属于线程私有?A.Java堆B.方法区C.程序计数器D.元空间2.标记-清除算法的主要缺点是?A.效率低B.空间碎片多C.需要额外空间D.不适用于大对象3.类加载过程中,“将字节码文件加载到内存”属于哪个阶段?A.验证B.准备C.加载D.初始化4.以下哪个垃圾收集器是基于“标记-整理”算法?A.ParNewB.CMSC.SerialOldD.G15.当JVM抛出“OutOfMemoryError:PermGenspace”时,可能是哪个区域内存不足?A.堆B.虚拟机栈C.方法区(永久代)D.本地方法栈6.新生代中默认的Eden区与Survivor区的比例是?A.2:1B.8:1C.8:2D.1:17.类加载器的双亲委派模型中,最高层的类加载器是?A.应用类加载器B.扩展类加载器C.启动类加载器D.自定义类加载器8.以下哪个参数用于设置JVM堆的最大内存?A.-XmsB.-XmxC.-XX:PermSizeD.-XX:MaxMetaspaceSize9.判断对象是否存活的“可达性分析”中,以下哪个不能作为GCRoots?A.虚拟机栈中引用的对象B.方法区中类静态属性引用的对象C.本地方法栈中JNI引用的对象D.已被回收的对象10.G1收集器的核心目标是?A.最大化吞吐量B.最小化停顿时间C.适应大内存场景D.仅收集新生代二、填空题(总共10题,每题2分)1.JVM内存中,程序计数器是唯一不会抛出__________异常的区域。2.方法区在JDK1.8及以后被替换为__________,位于本地内存中。3.垃圾回收算法中,__________算法适用于对象存活率低的场景(如新生代)。4.类加载的完整过程包括加载、验证、准备、__________、初始化五个阶段。5.CMS收集器的全称是__________。6.新生代由Eden区和两个__________区组成。7.判断对象存活的两种主要算法是引用计数法和__________。8.JVM参数中,-XX:+PrintGCDetails用于打印__________日志。9.对象在堆中分配时,若体积超过阈值会直接进入__________。10.类加载器的双亲委派模型中,子类加载器在加载类前会先委托__________尝试加载。三、判断题(总共10题,每题2分)1.堆是线程共享的内存区域,主要存储对象实例。()2.方法区仅存储类的元数据,不包括运行时常量池。()3.垃圾回收只会发生在堆中,方法区不会被回收。()4.新生代的垃圾回收称为MinorGC,老年代的称为FullGC。()5.CMS收集器的“并发标记”阶段会导致用户线程停顿。()6.类加载的双亲委派模型可以防止内存中出现多个相同的类。()7.对象一定分配在堆上,栈上无法分配。()8.元空间的大小受限于JVM堆内存上限。()9.ZGC收集器是一款适用于大内存场景的低延迟垃圾收集器。()10.程序计数器用于记录当前线程执行的字节码行号,线程私有。()四、简答题(总共4题,每题5分)1.简述JVM内存结构的主要区域及其核心功能。2.类加载的双亲委派模型是什么?其主要作用是什么?3.垃圾回收的触发条件有哪些?请列举至少3种。4.常见的OutOfMemoryError错误有哪些?请列举并说明可能原因。五、讨论题(总共4题,每题5分)1.G1收集器与CMS收集器的核心差异是什么?各自适用于什么场景?2.堆和栈在JVM中的作用有何区别?它们如何协同工作?3.实际生产环境中,JVM参数调优的常见策略有哪些?需要注意哪些问题?4.类加载过程中,初始化阶段的执行时机有哪些典型场景?破坏双亲委派模型的常见场景有哪些?答案及解析一、单项选择题1.C(程序计数器是线程私有,其他为共享区域)2.B(标记-清除会产生大量空间碎片)3.C(加载阶段负责将字节码加载到内存)4.C(SerialOld基于标记-整理算法)5.C(PermGen是方法区的旧称,JDK1.8前的OOM)6.C(默认Eden:Survivor=8:1:1,总比例8:2)7.C(启动类加载器是最高层)8.B(-Xmx设置堆最大内存)9.D(已回收对象无法作为GCRoots)10.B(G1目标是低停顿)二、填空题1.OutOfMemoryError2.元空间(Metaspace)3.复制4.解析5.并发标记清除收集器(ConcurrentMarkSweep)6.Survivor7.可达性分析8.垃圾回收(GC)9.老年代10.父类加载器三、判断题1.√(堆是共享的对象存储区)2.×(方法区包含运行时常量池)3.×(方法区的常量、类元数据也可能被回收)4.√(MinorGC针对新生代,FullGC涉及老年代)5.×(并发标记阶段用户线程与GC线程并发执行,无停顿)6.√(双亲委派确保类的唯一性)7.×(逃逸分析后,对象可能栈上分配)8.×(元空间使用本地内存,不受堆限制)9.√(ZGC支持TB级内存,停顿极短)10.√(程序计数器记录字节码行号,线程私有)四、简答题1.主要区域包括:①程序计数器(记录线程执行位置,线程私有);②虚拟机栈(存储栈帧,线程私有,存放局部变量等);③本地方法栈(为本地方法服务);④堆(存储对象实例,线程共享,垃圾回收主要区域);⑤方法区(存储类元数据、常量、静态变量等,JDK1.8后为元空间)。2.双亲委派模型指类加载器收到加载请求时,先委托父类加载器尝试加载,父类无法加载时再自己加载。作用:①避免类重复加载;②防止核心类被篡改(如用户自定义java.lang.String会被父类加载器拒绝)。3.触发条件:①新生代空间不足(MinorGC);②老年代空间不足(FullGC);③调用System.gc()(可能触发,但JVM可忽略);④方法区空间不足(JDK1.8前PermGen/OOM);⑤CMS收集器在并发收集失败时触发FullGC。4.常见OOM:①堆OOM(对象过多未回收,如内存泄漏);②栈OOM(线程请求栈深度超过限制,如递归过深);③方法区OOM(JDK1.8前常量池/类元数据过多,如动态生成类);④直接内存OOM(通过Unsafe或NIO分配的本地内存超限)。五、讨论题1.核心差异:G1基于Region分区,混合收集老年代和新生代,目标低停顿;CMS基于分代,仅收集老年代,易产生碎片。场景:G1适合大内存、低延迟需求(如互联网高并发);CMS适合CPU敏感、老年代对象存活率高的场景(如传统企业应用)。2.区别:堆是线程共享的对象存储区,垃圾回收主要区域;栈是线程私有,存储栈帧(局部变量、操作数栈等),生命周期与线程一致。协同:对象在堆中分配,栈中的引用指向堆中的对象;方法调用时,栈帧保存对象引用,控制对象生命周期。3.调优策略:①合理设置堆大小(-Xms/-Xmx),避免频繁GC;②调整新生代比例(-XX:NewRatio),适应对象朝生夕灭特性;③选择收集器(如G1替代CMS);④监控元空间大小(-XX:MaxMetaspaceSize)。注意:避免堆过小导致频繁FullGC,或过大导致单次GC时间过长;结合业务场景(如吞吐量/延迟优先)选择参数;通过GC日志分析调优效果。4.初始化阶段执

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论