当前位置: 首页 > news >正文

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 技术。

在这里插入图片描述

http://www.lryc.cn/news/206751.html

相关文章:

  • NPDP产品经理证书是什么行业的证书?
  • 37 深度学习(一):查看自己显卡的指令|张量|验证集|分类问题|回归问题
  • 用C语言解决三个整数比大小,x,y,z三个整数求最小整数,从键盘上输入3个不同的整数×,y,Z,请设计一个算法找出其中最小的数,并画出流程图。
  • 操作系统进程调度算法的模拟实现(c语言版本)
  • webbench压测工具
  • HarmonyOS 音频开发指导:使用 OpenSL ES 开发音频播放功能
  • docker搭建个人镜像仓库
  • Python机器学习17——Xgboost和Lightgbm结合分位数回归(机器学习与传统统计学结合)
  • C#编程学习
  • 关于vue 父级不使用子级某模块 (插槽替换)
  • 睿趣科技:抖音小店在哪里选品
  • 量变引起质变:安卓改多了,就是自己的OS
  • IDEA 之 在不更改操作系统用户名的情况下更改 ${USER} 变量?
  • 基于JAVA的天猫商场系统设计与实现,springboot+jsp,MySQL数据库,前台用户+后台管理,完美运行,有一万五千字论文
  • Redis学习
  • uni-app:实现picker下拉列表的默认值设置
  • 基于NB-iot技术实现财物跟踪的EA01-SG定位模块方案
  • 挑战吧,HarmonyOS应用开发工程师
  • 图论05-【无权无向】-图的广度优先BFS遍历-路径问题/检测环/二分图/最短路径问题
  • uniapp:谷歌地图,实现地图展示,搜索功能,H5导航
  • 关于腾讯云轻量应用服务器性能测评,看这一篇文章就够了
  • HDFS集群NameNode高可用改造
  • Spark集群中一个Worker启动失败的排错记录
  • Mysql的JDBC知识点
  • git的实际操作
  • 数据结构零基础C语言版 严蔚敏-线性表、顺序表
  • Keil uVision 5 MDK版软件安装包下载及安装教程(最详细图文教程)
  • 单目3D目标检测[基于深度辅助篇]
  • Ubuntu20.04下安装MySQL8环境
  • html鼠标悬停图片放大