JDK、JRE、JVM关系回顾
- JVM:Java Virtual Machine,翻译过来是Java虚拟机
- JRE:Java Runtime Environment,翻译过来是Java运行时环境
- JRE=JVM+Java程序运行时所需要的类库
- JDK:Java Development Kits,翻译过来是Java开发工具包
- JDK=JRE+Java开发辅助工具
Java源程序编译运行过程
Java源程序→编译→字节码文件→放到JVM上运行
JVM工作的总体机制
总体机制的粗略描述:
- 第一步:使用类加载器子系统将 *.class 字节码文件加载到 JVM 的内存
- 第二步:在 JVM 的内存空间存储相关数据
- 第三步:在执行引擎中将 *.class 字节码文件翻译成 CPU 能够执行的指令
- 第四步:将指令发送给CPU执行
JVM落地产品
- Sun公司的HotSpot
- BEA公司的JRockit
- IBM公司的J9 VM
JVM 底层常见的面试题
- 说一下JVM的主要组成部分?及其作用?
- 说一下JVM运行时数据区?
- 队列和栈是什么?有什么区别?
- 什么是双亲委派模型?
- 说一下类装载的执行过程?
- 怎么判断对象是否可以被回收?
- Java 中都有哪些引用类型?
- 说一下JVM有哪些垃圾回收算法?
- 说一下JVM有哪些垃圾回收器?
- 详细介绍一下CMS垃圾回收器?
- 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?
- 简述分代垃圾回收器是怎么工作的?
- 说一下JVM调优的工具?
- 常用的JVM调优的参数都有哪些?
- 怎么获取Java程序使用的内存?堆使用的百分比?
- Java 中堆和栈有什么区别?
- 你能保证GC执行吗?
这些面试题等学完这一专栏都能游刃而解。