说出30道JVM面试题及答案
时间: 2023-09-22 19:06:31 浏览: 294
Java30道面试题及答案
1. 什么是JVM?
JVM(Java Virtual Machine)是Java虚拟机的缩写,是Java程序运行的环境。
2. JVM的组成部分有哪些?
JVM由类加载器、运行时数据区、执行引擎和本地库接口组成。
3. 类加载器有哪些?
类加载器有三种:启动类加载器、扩展类加载器和应用程序类加载器。
4. 什么是类加载器?
类加载器是Java虚拟机的一个组成部分,它负责将类文件加载到JVM中。
5. 什么是类加载器的双亲委派模型?
类加载器的双亲委派模型是一种类加载器的层级结构,当一个类需要被加载时,它的父类加载器会先尝试加载这个类,如果父类加载器不能加载这个类,它才会把这个请求传给子类加载器。
6. 什么是内存泄漏?
内存泄漏是指应用程序在运行时未能及时释放无用的内存,导致内存空间的浪费和程序性能的下降。
7. JVM中的运行时数据区有哪些?
JVM中的运行时数据区有程序计数器、虚拟机栈、本地方法栈、堆和方法区。
8. 什么是程序计数器?
程序计数器是一块较小的内存空间,它用于保存当前线程执行的字节码指令地址。
9. 什么是虚拟机栈?
虚拟机栈是一块内存空间,用于保存方法执行时的局部变量表、操作数栈、动态链接、方法出口等信息。
10. 什么是本地方法栈?
本地方法栈是一块内存空间,用于支持JVM调用本地方法的功能。
11. 什么是堆?
堆是JVM中最大的一块内存空间,用于存放对象实例和数组等数据。
12. 什么是方法区?
方法区是一块内存空间,用于存放类的元数据信息、常量池、静态变量、方法信息等。
13. JVM中的垃圾回收算法有哪些?
JVM中的垃圾回收算法有标记-清除算法、复制算法、标记-整理算法和分代算法等。
14. 什么是标记-清除算法?
标记-清除算法是一种垃圾回收算法,它分为标记和清除两个阶段,先标记出所有需要回收的对象,然后再回收这些对象所占用的内存空间。
15. 什么是复制算法?
复制算法是一种垃圾回收算法,它将堆空间分为两个相等的区域,每次只使用其中一个区域,当这个区域用完时,将其中的存活对象复制到另一个区域中,然后清空原来的区域。
16. 什么是标记-整理算法?
标记-整理算法是一种垃圾回收算法,它先标记出所有需要回收的对象,然后将存活对象往一端移动,然后将空闲的内存空间清理掉。
17. 什么是分代算法?
分代算法是一种垃圾回收算法,它将堆空间分为新生代和老年代两个区域,新生代内存空间小,存活时间短,采用复制算法;老年代内存空间大,存活时间长,采用标记-清除算法或标记-整理算法。
18. 什么是强引用?
强引用是指在程序中直接定义的引用类型变量,只要强引用存在,垃圾回收器就不会回收被引用的对象。
19. 什么是软引用?
软引用是一种相对弱化的引用类型,如果JVM内存空间不足,垃圾回收器会回收被软引用引用的对象。
20. 什么是弱引用?
弱引用是一种更弱化的引用类型,它的引用对象只要没有被强引用或软引用所引用,就会被垃圾回收器回收。
21. 什么是虚引用?
虚引用是一种最弱化的引用类型,它本身并不能引用对象,它的作用是在对象被回收时收到一个通知。
22. 什么是类的生命周期?
类的生命周期包括加载、验证、准备、解析、初始化、使用和卸载等阶段。
23. 什么是类的加载阶段?
类的加载阶段是指将类的字节码文件加载到JVM中,并生成一个对应的Class对象。
24. 什么是类的验证阶段?
类的验证阶段是指对类的字节码文件进行验证,以确保它符合JVM规范。
25. 什么是类的准备阶段?
类的准备阶段是指为类的静态变量分配内存,并赋予默认值。
26. 什么是类的解析阶段?
类的解析阶段是指将类的符号引用转换为直接引用。
27. 什么是类的初始化阶段?
类的初始化阶段是指执行类的静态初始化代码块。
28. 什么是类的使用阶段?
类的使用阶段是指使用类的方法或变量。
29. 什么是类的卸载阶段?
类的卸载阶段是指将类从JVM中卸载,释放内存空间。
30. 什么是JVM调优?
JVM调优是指通过调整运行时数据区、垃圾回收算法、内存分配策略等方式,优化JVM的性能和稳定性。
阅读全文