java中JVM面试题及答案.doc
java中JVM面试题及答案
一、单项选择题(每题2分,共10题)
1.JVM中哪个区域存储类的元数据信息?
A.堆B.方法区C.栈D.本地方法栈
2.以下哪种垃圾回收器是新生代的垃圾回收器?
A.CMSB.G1C.SerialD.ZGC
3.JVM堆内存默认的初始大小是?
A.1MB.2MC.物理内存的1/64D.物理内存的1/4
4.方法调用时,参数存储在?
A.堆B.方法区C.栈帧D.程序计数器
5.哪个命令可以查看JVM的参数?
A.jpsB.jstatC.jinfoD.jmap
6.以下不属于JVM内存区域的是?
A.直接内存B.虚拟机栈C.常量池D.代码区
7.对象创建时首先在哪个区域分配内存?
A.新生代B.老年代C.永久代D.元空间
8.当一个对象的引用计数为0时,会发生什么?
A.立即被回收B.进入老年代C.进入新生代D.等待垃圾回收
9.哪个垃圾回收器采用标记整理算法?
A.SerialOldB.ParNewC.CMSD.G1
10.JVM中程序计数器的作用是?
A.存储指令B.记录正在执行的指令地址C.存储局部变量D.管理线程
二、多项选择题(每题2分,共10题)
1.以下属于JVM性能调优参数的有()
A.-XmsB.-XmxC.-XX:MaxPermSizeD.-XX:NewRatio
2.垃圾回收算法有()
A.标记清除B.标记整理C.复制算法D.分代收集
3.JVM内存区域包含()
A.堆B.方法区C.虚拟机栈D.本地方法栈
4.以下哪些情况会导致对象进入老年代()
A.大对象直接进入老年代B.长期存活的对象进入老年代
C.新生代空间不足D.动态年龄判断
5.常用的JVM监控工具包括()
A.jconsoleB.visualvmC.jprofilerD.arthas
6.类加载的过程包括()
A.加载B.验证C.准备D.解析E.初始化
7.以下关于JVM堆描述正确的有()
A.是线程共享的区域B.存放对象实例
C.分为新生代、老年代等区域D.不会发生内存溢出
8.以下属于CMS垃圾回收器特点的是()
A.以获取最短回收停顿时间为目标B.采用标记清除算法
C.并发收集D.低停顿
9.以下哪些是JVM调优的目标()
A.提高系统性能B.减少垃圾回收频率C.降低内存占用D.提高CPU利用率
10.JVM中对象的访问方式有()
A.句柄访问B.直接指针访问C.间接访问D.本地访问
三、判断题(每题2分,共10题)
1.JVM是跨平台的,所以Java程序可以在任何操作系统上运行。()
2.方法区是线程共享的区域。()
3.垃圾回收器只能回收堆内存中的对象。()
4.-Xms和-Xmx设置相同的值可以减少JVM动态调整堆大小的开销。()
5.程序计数器是线程私有的。()
6.新生代中的对象一旦创建就不会进入老年代。()
7.所有的Java类在运行时都会被加载到JVM中。()
8.G1垃圾回收器不适合大内存场景。()
9.JVM调优只需要关注堆内存即可。()
10.一个对象被多个引用变量引用时,其引用计数为1。()
四、简答题(每题5分,共4题)
1.简述JVM内存结构。
答:JVM内存结构主要包括堆、方法区、虚拟机栈、本地方法栈和程序计数器。堆是对象实例的存放地,方法区存储类元数据等,虚拟机栈用于方法调用,本地方法栈服务本地方法,程序计数器记录当前线程执行的字节码地址。
2.简述垃圾回收的作用。
答:垃圾回收主要作用是回收不再使用的对象所占用的内存空间,避免内存泄漏,使内存可以被重复利用,从而保证JVM有足够的内存空间来创建新对象,维持系统稳定运行,提高系统性能。
3.简述类加载的过程。
答:类加载过程包括加载、验证、准备、解析和初始化。加载是将类的字节码文件读入内存;验证确保字节码文件的正确性;准备为类的静态变量分配内存并赋初始值;解析将符号引用转换为直接引用;初始化执行类的静态代码块等操作。
4.简述JVM调优的一般步骤。
答:首先分析