Java面试(JVM篇)——JVM 面试题合集 & 深入理解JVM虚拟机

关于什么是JVM?

作用:

  • 运⾏并管理Java 源码⽂件所⽣成的Class⽂件,
  • 在不同的操作系统上安装不同的JVM ,从⽽实现了跨平台的保证。

⼀般情况下,对于开发者⽽⾔,即使不熟悉JVM 的运⾏机制并不影响业务代码的开发,因为在安装完JDK 或者JRE 之后,其中就已经内置了JVM ,所以只需要将Class⽂件交给JVM 运⾏即可。

可以看出JVM的大致流程是把一个class 文件通过类加载器加载进系统,然后放到不同的区域,通过编译器编译。

(1)第一个部分Class Files

在Java 中,Class⽂件是由源码⽂件⽣成的,⾄于源码⽂件的内容,是每个Java 开发者在JavaSE 阶段的必备知识,这⾥就不再赘述了,我们可以关注⼀下Class⽂件的格式,⽐如其中的常量池、成员变量、⽅法等,这样就能知道Java 源码内容在Class⽂件中的表示⽅式

(2)第二个部分Class Loader Subsystem 即类加载机制

Class⽂件加载到内存中,需要借助Java 中的类加载机制。类加载机制分为装载、链接和初始化,其主要就是对类进⾏查找、验证以及分配相关的内存空间和赋值

(3)第三个部分Runtime Data Areas 也就是通常所说的运⾏时数据区

其解决的问题就是Class⽂件进入内存之后,该如何进⾏存储不同的数据以及数据该如何进⾏流转。比如:

  • Method Area 通常会储存由Class⽂件常量池所对应的运⾏时常量池、字段和⽅法的元数据信息、类的模板信息等;
  • Heap 是存储各种Java 中的对象实例;
  • Java Threads 通过线程以栈的⽅式运⾏加载各个⽅法;
  • Native Internal Thread可以理解为是加载运⾏native 类型的⽅法;
  • PC Register 则是保存每个线程执⾏⽅法的实时地址。

这样通过运⾏时数据区的5 个部分就能很好地把数据存储和运⾏起来了。

(4)第四个部分Garbage Collector 也就是通常所说的垃圾回收

就是对运⾏时数据区中的数据进⾏管理和回收。回收机制可以基于不同的垃圾收集器,⽐如Serial、Parallel、CMS、G1、ZGC 等,可以针对不同的业务场景选择不同的收集器,只需要通过JVM 参数设置即可。如果我们打开hotspot 的源码,可以发现这些收集器其实就是对于不同垃圾收集算法的实现,核⼼的算法有3 个:标记-清除、标记-整理、复制

(5)第五个部分是JIT Compiler 和Interpreter

通俗理解就是翻译器,Class 的字节码指令通过JIT Compiler 和Interpreter 翻译成对应操作系统的CPU 指令,只不过可以选择解释执⾏或者编译执⾏,在HotSpot JVM默认采用的是这两种⽅式的混合。

(6)第六就是JNI 的技术

如果我们想要找Java 中的某个native⽅法是如何通过C 或者C++实现的,那么可以通过Native Method Interface 来进⾏查找,也就是所谓的JNI 技术。

相关推荐
u01030552716 小时前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u0103055271 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝3 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u0103055273 天前
Java图像处理实战指南
人工智能·1024程序员节
u0103055273 天前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u0103055276 天前
Java实用类应用精讲
人工智能·1024程序员节
u0103055276 天前
Java I/O核心操作实战
人工智能·1024程序员节
u0103055277 天前
ArrayList操作详解与实战应用
人工智能·1024程序员节
u0103055278 天前
Java模块化编程实战指南
人工智能·笔记·1024程序员节
u0103055279 天前
使用BufferedReader读取控制台输入
人工智能·1024程序员节