当前位置:首页 > Java知识 > 正文内容

jvm体系(jvm基本结构)

abcsky883个月前 (02-09)Java知识67

今天给各位分享

有位小伙伴在我的粉丝群里面问我一个面试题,说面试被问对JVM的理解,不知道怎么回答,今天咱们来聊透,就算是八股文你也得会另外,往期面试题解析中配套的文档我已经准备好,想获得的可以在我的煮叶简介中找到先来看什么是JVM?

jvm体系(jvm基本结构)

1、什么是JVMJVM(Java Virtual Machine)其实是一套标准通过定义虚拟机,像真实计算机一样,能够运行字节码指令JVM的好处是可以屏蔽操作系统的细节, 使Java可以一次编写,到处运行。

实现JVM的厂商有很多,比如Hotspot、JRockit、IBM J9等等今天我们重点来聊一聊主流的Hotspot,因为Oracle JDK与OpenJDK都是网站推广的名词解释采用HotSpot VM从源码层面说,它们俩基本上没什么区别。

2、JVM架构设计下面我给大家详细介绍一下JVM的架构设计,总体来看HotSpot VM 主要由3个核心部分组成:类装载子系统(Class Loader Subsystem)运行时数据区(Runtime Data Areas)。

执行引擎(Execution Engine)那么Hotspot JVM架构细节和运行机制又是怎样的呢?首先,将编译好的.class文件装载到类加载子系统,它的主要功能是查找并验证类文件、完成相关内存空间的分配和对象赋值。

类文件加载到内存之后由运行时数据区来完成数据存储和数据交换运行时数据区又分为线程共享内存区网站推广的名词解释和线程隔离内存区线程共享内存区包括方法区和堆区,它们是程序员能够通过编写代码直接操作的内存区,而线程隔离内存区包括栈区、程序计数器和本地方法栈,它们是完全由JVM来调度的内存区域。

首先来看方法区,它的主要功能是存储运行时常量池、字段和方法的元数据和类的的元数据。

而堆区呢,主要是用来存储Java对象的实例,也就是我们new的类都存在堆区。

栈区是通过线程的方式运行来加载各种方法。

程序计数器呢,是负责保存每个线程执行的方法的地址。

本地方法区是负责加载并运行native类型的方法。

这样,通过运行时数据区的五个内存区就能完成Java程序程序逻辑的执行和数据交换。接下来看执行引擎,它主要包含即时编辑器和垃网站推广的名词解释圾回收器。

即时编译器,通俗地理解就是用来将字节码翻译成操作系统能够执行的CPU指令,可以通过JVM参数来设置选择解释执行或者是编译执行。

所谓解释执行就是直接将字节码作为源程序输入解释执行,不必等待编译器全部编译完成再执行,这样可以省去许多不必要的编译时间。

而编译执行就是就是由编译程序将目标代码一次性编译成目标程序,再由机器运行,执行效率更高,占用内存资源也更小。

在Hotspot的实现中默认是两种方式的组合垃圾回收器主要负责对运行时数据区的数据进行管理和回收,其实就是对各种垃圾回收算法的实现,总体来说有三种核心算法,分别是复制算法、标记清除算法和标记整理算法,这些算法的选择呢,我们可以通过JVM网站推广的名词解释参数来设置。

最后,来看本地方法接口,也就是JNI技术。我们可以通过JNI来查找并调用C或C++实现的代码,还可以调用操作系统的动态链接库(DLL)等等。

3、总结好了,通过对Hotspot架构的分析,相信各位小伙伴已经非常清晰地知道了JVM的运行原理。当然,在实际的开发过程中,我们可以通过配置JVM参数来对JVM进行调优,比如这些参数。

还可以通过一些常见的JDK命令来分析JVM的状态,查找问题的原因从而完成对JVM的调优,比如这些命令。

以上就是我对JVM的理解。

扫描二维码推送至手机访问。

版权声明:本文由海南拓宏网络科技工作室发布,如需转载请注明出处。

本文链接:http://4blc.com/post/15921.html

分享给朋友:

“jvm体系(jvm基本结构)” 的相关文章

面试java问什么问题(java面试经常问到的问题有哪些呢)

本文分享给大家的是: 学好java技术后,大家面临的问题便是求职,在求职过程中,求职者会被问到很多专业技术上的问题,那么有哪些是Java程序员面试中容易被问到的问题呢?下面云和小编收集了八个常常被问到的Java面试题,希望能帮助到大家。 Java程序员面试中容易被问到的问题...

kotlin发展前景(kotlin有前途吗)

今天给各位分享 整理 | 王启隆透过「历史上的今天」,从过去看未来,从现在亦可以改变未来今天是 2023 年 2 月 15 日,在 1564 年的今天,欧洲近代自然科学的创始人伽利略诞辰伽利略曾在学徒时期否定了亚里斯多德的重快轻慢的原理,随后他为了向全校师生证明自己提出的定律,在比...

为什么大量的软件开发人员没有足够重视需求工程(在大型软件开发中用户承担的工作是)

本篇文章给大家谈谈 有两种类型的开发人员,优秀的开发人员和聪明的开发人员,你是哪一种?掌握一些技巧能让我们变成一个聪明的开发人员1)main()函数的不同写法从使用 java 的第一天开始,我们应该就会这么写:public class Example {public static...

谁被誉为java之父(java之父是谁?)

本篇文章给大家谈谈 前不久,TechRepublic 发表了一篇文章讨论关于开发人员喜爱与讨厌的语言结果很有意思:Java 在最受欢迎的语言排行榜名列第三,同时在最讨厌的语言中排在第二名显然,Java 作为一门开发语言,人们对它的看法形成了两极分化。 对此 C++ 的创始人...

粤嵌培训要交钱吗(粤嵌培训多少钱)

今天给各位分享 求学之路我是电信工程学院计算机专业的学生,我叫小杨,目前就业于杭州某信息技术有限公司在大学里面,我沉迷于玩乐,结果全班女生就我一个英语四级没有通过从知道自己平庸到接受自己平庸,我只用了一个下午那天下午有人告诉我:“你四级都过不了,能有什么出息?”。 人总是会...

分享一个小众不同运动app数据同步的应用软件(运动数据不同步什么原因)

本篇文章给大家谈谈 作者:難諏責 作用是给各个运动APP之间数据同步的乍一听似乎没啥用,但如果你有多个在用的运动APP,或者曾经历过某个APP的倒闭,那么数据同步与备份就有用了(说的就是NRC中国倒闭)下图是「健康同步」支持的同步源(左)和目的地(中),有佳明,颂拓,三星等...