大厂面试题-什么是JVM

这篇具有很好参考价值的文章主要介绍了大厂面试题-什么是JVM。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JVM是Java虚拟机,在聊什么是JVM之前,我们不妨看⼀下这张图。

大厂面试题-什么是JVM,JVM面试题,jvm

从这张图中可以看出JVM所处的位置,同时也能看出它两个作用:

    1、运⾏并管理Java源码⽂件所⽣成的Class⽂件,

    2、在不同的操作系统上安装不同的JVM,从⽽实现了跨平台的保证。

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

但当程序运⾏的过程中出现了问题,⽽这个问题发生在JVM层⾯的,那我们就需要熟悉JVM的运⾏机制,才能迅速排查并解决JVM的性能问题。

我们先看下目前主流的JVM HotSpot的架构图,通过这张架构图,我们可以看出JVM的大致流程是把一个class文件通过类加载器加载进系统,然后放到不同的区域,通过编译器编译。

大厂面试题-什么是JVM,JVM面试题,jvm

一个部分Class Files

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

二个部分Class Loader Subsystem即类加载机制

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

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

其解决的问题就是Class⽂件进入内存之后,该如何进⾏存储不同的数据以及数据该如何进⾏扭转。比如:Method   Area通常会储存由Class⽂件常量池所对应的运⾏时常量池、字段和⽅法的数据信息、类的模板信息等;Heap是存储各种Java中的对象实例;Java Threads通过线程以栈的⽅式运⾏加载各个⽅法;Native Internal Thread可以理解为是加载运⾏native类型的⽅法;PC   Register则是保存每个线程执⾏⽅法实时地址。

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

第四个Garbage Collector也就是通常所说的垃圾回收

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

五个部分是JIT CompilerInterpreter

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

大厂面试题-什么是JVM,JVM面试题,jvm

第六就是JNI的技术

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

通过官⽹上给出的HotSpot架构图,我们就能够知道JVM到底是如何运行的了,当然实际操作的过程中我们可以借助⼀些JVM参数:例如:

大厂面试题-什么是JVM,JVM面试题,jvm

些常⻅的JDK常⻅命令

大厂面试题-什么是JVM,JVM面试题,jvm

再结JDK常⻅⼯具以及第三⽅的⼀些⼯具

大厂面试题-什么是JVM,JVM面试题,jvm

我们就可以优雅地分析JVM出现的常⻅问题并对其进⾏调优。文章来源地址https://www.toymoban.com/news/detail-732518.html

到了这里,关于大厂面试题-什么是JVM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3.Java面试题—JVM基础、内存管理、垃圾回收、JVM 调优

    一篇文章掌握整个JVM,JVM超详细解析!!! JVM (Java虚拟机) 是运行 Java 字节码 的 虚拟机 。 JVM 针对 不同系统 有 特定实现 ( Windows 、 Linux 等),目的是 同样的代码 在 不同平台 能运行出 相同的结果 。 Java 语言 要经过 编译 和 解释 两个步骤: 编译 :通过 编译器 将 代码 一

    2024年02月15日
    浏览(38)
  • 面试宝典之JVM优化

    加载、验证、准备、解析、初始化。然后是使用和卸载了 新生代内存不够用时候发生 MGC 也叫 YGC,JVM 内存不够的时候发生 FGC 标记-清除: 这是垃圾收集算法中最基础的,根据名字就可以知道,它的思想就是标记哪些要被回收的对象,然后统一回收。这种方法很简单,但是会有

    2024年01月20日
    浏览(37)
  • Jvm基础面试题

    JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。 Class loader(类装载):根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtime data area中的method area。 Executio

    2024年02月09日
    浏览(29)
  • 面试八股——JVM★

    类加载 类加载器的定义 类加载器的类别 类装载的执行过程 类的装载过程: 加载: 验证: 准备: 这里设置初始值并不是传统意义的设置初始值(那个过程在初始化阶段)。 解析: 初始化: 使用: 类的回收(被垃圾器回收) 回收时机 垃圾定位——可达性分析法 可作为

    2024年04月23日
    浏览(25)
  • JVM-面试题

    1、对象创建 类加载检查 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池定位到类的符号引用,并且检查这个符号引用代表的类是否被加载、解析和初始化过。若没有,必须先执行类加载过程。 分配内存 类加载检查通过后,jvm将为新生对象分配内存

    2024年02月20日
    浏览(25)
  • 【高频面试题】JVM篇

    JVM是什么: JVM(Java虚拟机)是Java程序的 运行环境 ,它是Java平台的核心组成部分之一。JVM提供了一个 运行Java字节码的虚拟机 ,负责将 Java程序解释和执行。 Java程序员可以在JVM上编写和运行Java程序,而 不用考虑底层操作系统的差异性 。JVM的特性使得Java具备了 跨平台性

    2024年02月13日
    浏览(29)
  • JVM相关面试题

    JVM 是Java Virtual Machine (Java虚拟机) 的缩写,是一个可以执行Java字节码的虚拟机进程 。是Java实现跨平台的最核心的部分 先编译,后解释执行 Java源文件 -- 编译器 -- class文件(虚拟指令)– Java虚拟机(JVM)– 解释为指令执行 前4个字节是固定的魔数,用于标识该文件是否为有

    2024年02月07日
    浏览(27)
  • 【JAVA面试】JVM

    提示:文章先作为初版,等后续时间充足后,补充更深的内容 JVM中的垃圾回收算法可以分为两种类型: 基于引用计数 的垃圾回收算法和 基于可达性分析 的垃圾回收算法。目前主流的JVM垃圾回收算法都是基于 可达性分析 的。 引用计数算法 引用计数算法是一种简单的垃圾回

    2024年02月03日
    浏览(28)
  • JVM面试篇

    当通过 Java 命令启动 Java 进程的时候,会为它分配内存。内存的一部分用于创建堆空间,当程序中创建对象的时候,就从堆空间中分配内存。GC 是 JVM 内部的一个进程,回收无效对象的内存用于将来的分配。 JVM包含 两个子系统 和 两个组件 两个子系统为 Class loader(类装载):根

    2024年02月14日
    浏览(47)
  • 12、JVM高频面试题

    JVM主要分为下面几部分 类加载器:负责将字节码文件加载到内存中 运行时数据区:用于保存java程序运行过程中需要用到的数据和相关信息 执行引擎:字节码文件并不能直接交给底层操作系统去执行,因此需要特定的命令解析器执行引擎将字节码翻译成底层系统指令 本地库

    2024年02月03日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包