Java 虚拟机(JVM)面试题及答案 Java 虚拟机(JVM)是 Java 语言的运行环境,它负责将 Java 字节码转换为机器代码并执行。下面是 45 道 JVM 面试题及答案的总结: 一、栈帧 栈帧是 JVM 的一个基本结构,包含局部变量表、操作数栈、动态连接、返回地址等。其中,程序计数器是一块较小的内存空间,用于存储当前线程执行的字节码的行号指示器。 二、字符串常量池 字符串常量池是 JVM 中的一块内存区域,用于存储字符串常量。在 JDK 8 之前,字符串常量池位于 Perm 区域,而在 JDK 8 及更高版本中,字符串常量池位于堆上。 三、垃圾收集算法 JVM 中有多种垃圾收集算法,包括标记清除算法、复制算法、标记整理算法和分代收集算法。其中,标记清除算法的缺点是碎片化,复制算法的缺点是浪费空间,标记整理算法的效率比前两者差,分代收集算法则是根据对象的生命周期来选择不同的垃圾收集算法。 四、引用类型 JVM 中有四种引用类型:强引用、软引用、弱引用和虚引用。强引用是最普通最强硬的一种存在,软引用用于维护一些可有可无的对象,弱引用对象相比较软引用,要更加无用一些,虚引用是一种形同虚设的引用,必须和引用队列联合使用。 五、垃圾收集器 JVM 中有多种垃圾收集器,包括 Minor GC、Major GC、Full GC 等。Minor GC 发生在年轻代的 GC,Major GC 发生在老年代的 GC,Full GC 是全堆垃圾回收。不同的垃圾收集器适合不同的应用场景,例如 Serial 垃圾收集器适合客户端应用,ParNew 垃圾收集器适合交互式应用,Parallel Scavenge 垃圾收集器适合没有交互的后台计算。 六、GC Roots GC Roots 是一组必须活跃的引用,包括 Java 线程中当前所有正在被调用的方法的引用类型参数、局部变量、临时值等。GC Roots 可以分为三大类:活动线程相关的各种引用、类的静态变量的引用和 JNI 引用。 七、对象分配 对象的分配是 JVM 中的一个重要机制。一般来说,对象都是优先分配在年轻代上的,但是在新生代内存不够时,老年代分配担保。大对象则是直接在老年代分配。 八、垃圾收集器类型 JVM 中有多种垃圾收集器类型,包括 Serial 垃圾收集器、ParNew 垃圾收集器、Parallel Scavenge 垃圾收集器、CMS 垃圾收集器等。不同的垃圾收集器类型适合不同的应用场景。
剩余11页未读,继续阅读
- 粉丝: 60
- 资源: 2904
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助