大家好,我是锋哥。今天分享三道最简单最常问的JVM面试题,希望对大家有帮助;
一,请问JDK与JVM有什么区别?
简单来说:
1. JVM=Java 运行器;
2. JRE=JVM + Java 基础&核心类库;
3. JDK=JRE + Java 开发工具(编译器、调试器等)。
1.JVM 是 Java Virtual Machine 的缩写,翻译为中文就是“Java虚拟机”,它是一个虚构出来的计算 机,通过在实际的计算机上仿真模拟各种计算机功能来实现 Java 程序的运行,简单来说 JVM 是用 来解析和运行 Java 程序的;
2. JDK(Java Development Kit),即 Java 开发工具包,是一个编写 Java 应用程序的开发环境。JDK 是 整个 Java 的核心,包括了JRE(Java运行环境)与一些Java开发工具(例如:jconsole、javac、 java、javadoc、native2ascii、jar等)。JDK=JRE+Java开发工具(编译器、调试器等);
3.JRE(Java Runtime Environment),即 Java 运行环境,支持 Java 程序运行的标准环境,包括了 JVM(Java虚拟机)的标准实现以及 Java 基础&核心类库。JRE=JVM+Java 基础&核心类库。
1000道 互联网大厂Java工程师 精选面试题-Java资源分享网1000道 互联网大厂Java工程师 精选面试题http://java.python222.com/article/971
二,OracleJDK与OpenJDK有什么区别?
各种版本的JDK一般来说都会符合Java虚拟机规范。
两者的区别一般来说包括:
- 两种JDK提供的工具套件略有差别,比如jmc等有版权的工具。
- 某些协议或配置不一样,比如美国限制出口的加密算法。
- 其他细微差别,比如JRE中某些私有的API不一样
三,JVM的运行时数据区有哪些?
根据JVM规范,标准的JVM运行时数据区包括以下部分:
- 程序计数器
- Java虚拟机栈
- 堆内存
- 方法区
- 运行时常量池
- 本地方法栈:具体的JVM实现可根据实际情况进行优化或者合并,满足规范的要求即可。