大厂面试题-什么是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日
    浏览(50)
  • 【JAVA面试】JVM

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

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

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

    2024年02月13日
    浏览(41)
  • JVM面试突击班2

    创建阶段 (1)为对象分配存储空间 (2)开始构造对象 (3)从超类到子类对static成员进行初始化 (4)超类成员变量按顺序初始化,递归调用超类的构造方法 (5)子类成员变量按顺序初始化,子类构造方法调用,并且一旦对象被创建,并被分派给某些变量赋值,这个对象的

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

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

    2024年02月03日
    浏览(41)
  • JVM面试突击1

    仅仅是将我们的 .java 文件转换成了 .class 文件,实际上就是文件格式的转换,对等信息转换。 所谓类加载机制就是 装载(Load) ClassFile— 字节流 ---- 类加载器 查找和导入class文件 (1)通过一个类的全限定名获取定义此类的二进制字节流 (2)将这个字节流所代表的静态存储结

    2024年02月14日
    浏览(42)
  • 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日
    浏览(39)
  • JVM(5)面试篇

    关联课程内容 基础篇-初识JVM 基础篇-Java虚拟机的组成 回答路径 JVM的定义 作用 功能 组成 1、定义: JVM 指的是Java虚拟机( Java Virtual Machine )。JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件,Java虚拟机上可以运行Java、Kotlin、Scala、Groovy等语言。 启

    2024年02月21日
    浏览(39)
  • JVM面试题:①

    类加载器:有那些类装载器:根启动加载器、拓展类加载器、应用类加载器 双亲委派机制 Java类加载的沙箱安全机制 Java8以后得JVM 1.尚硅谷Java开发常见面试题详解https://blog.csdn.net/u011863024/article/details/114684428

    2024年01月20日
    浏览(47)
  • JVM-面试题

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

    2024年02月20日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包