跳到主要内容

JVM 高级面试题

一、Java内存模型

1. 我们开发人员编写的Java代码是怎么让电脑认识的

  • 首先先了解电脑是二进制的系统,他只认识 01010101
  • 比如我们经常要编写 HelloWord.java 电脑是怎么认识运行的
  • HelloWord.java是我们程序员编写的,我们人可以认识,但是电脑不认识

Java文件编译的过程

1、 程序员编写的.java文件;

2、 由javac编译成字节码文件.class:(为什么编译成class文件,因为JVM只认识.class文件);

3、 在由JVM编译成电脑认识的文件(对于电脑系统来说文件代表一切);

(这是一个大概的观念 抽象画的概念)

file

2. 为什么说java是跨平台语言

  • 这个夸平台是中间语言(JVM)实现的夸平台
  • Java有JVM从软件层面屏蔽了底层硬件、指令层面的细节让他兼容各种系统

难道C 和 C++ 不能夸平台吗 其实也可以 C和C++需要在编译器层面去兼容不同操作系统的不同层面,写过C和C++的就知道不同操作系统的有些代码是不一样

3. Jdk和Jre和JVM的区别

  • Jdk包括了Jre和Jvm,Jre包括了Jvm
  • Jdk是我们编写代码使用的开发工具包
  • Jre 是Java的运行时环境,他大部分都是 C 和 C++ 语言编写的,他是我们在编译java时所需要的基础的类库
  • Jvm俗称Java虚拟机,他是java运行环境的一部分,它虚构出来的一台计算机,在通过在实际的计算机上仿真模拟各种计算机功能来实现Java应用程序

4. 说一下 JVM由那些部分组成,运行流程是什么?

file

  • JVM包含两个子系统和两个组件: 两个子系统为Class loader(类装载)、Execution engine(执行引擎); 两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。