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

Java程序的运行机制和Java虚拟机

admin9小时前知识普及3

Java程序的运行机制和Java虚拟机

1、java程序的运行

Java中源文件后缀为*.java,编译(也就是javac命令)使*.java文件转换为*.class文件,然后在计算机上执行(java命令)*.class文件。这就是java程序的运行过程,那么JVM(java虚拟机)是做什么用的哪?

首先我们来看一下JVM做什么用的,来看下图。JVM是读取和处理*.class文件。所有的*.class文件都是在JVM上运行的;JVM负责与不同的操作系统进行匹配。

Java程序的运行机制和Java虚拟机 第1张

2、JVM、 JDK、 JRE到底是什么

JVM -- java

JVM就是我们常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应java虚拟机是什么,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解 释给本地系统执行。

JVM 的主要工作是解释自己的指令集(即字节码)到 CPU 的指令集或 OS 的系统调用,保护用户免被恶意程序骚扰。 JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件( )。类文件的 组成包括 JVM 指令集,符号表以及一些补助信息。

JRE -- java

JRE是指java运行环境。光有JVM还不能完成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在 这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库Java程序的运行机制和Java虚拟机,而jvm和 lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件 和jre一起打包发给朋友,这样你的朋友就 可以运行你写程序了。(jre里有运行.class的java.exe)

JDK -- java kit

JDK是java开发工具包,基本上每个学java的人都会先在机器 上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录。在目录下面有 六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹:bin、、lib、 jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包 含JVM。

bin:最主要的是编译器(javac.exe)

:java和JVM交互用的头文件

lib:类库

Java程序的运行机制和Java虚拟机 第2张

jre:java运行环境

(注意:这里的bin、lib文件夹和jre里的bin、lib是 不同的)总的来说JDK是用于java程序的开发,而jre则 是只能运行class而没有编译的功能。

3、搜到的面试题目

什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。

Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。

JDK、JRE、JVM关系是什么?

JDK(Java Kit)即为Java开发工具包,包含编写Java程序所必须的编译、运行等开发工具以及JRE。开发工具如:用于编译java程序的javac命令、用于启动JVM运行java程序的java命令、用于生成文档的命令以及用于打包的jar命令等等。

JRE(Java )即为Java运行环境,提供了运行Java应用程序所必须的软件环境,包含有Java虚拟机(JVM)和丰富的系统类库。系统类库即为java提前封装好的功能类,只需拿来直接使用即可,可以大大的提高开发效率。

JVM(Java )即为Java虚拟机,提供了字节码文件(.class)的运行环境支持。

简单说,就是JDK包含JRE包含JVM。

偶遇这道题目,觉得这个也有详述的必要,加在此处。

解释内存中的栈(stack)、堆(heap)和方法区( area)的用法。(下面这段话虽然讲的很理论,但对于后期程序调试有很大的支撑作用)

通常我们定义一个基本数据类型的变量Java程序的运行机制和Java虚拟机,一个对象的引用,还有就是函数调用的现场保存都使用JVM中的栈空间;而通过new关键字和构造器创建的对象则放在堆空间,堆是垃圾收集器管理的主要区域,由于现在的垃圾收集器都采用分代收集算法,所以堆空间还可以细分为新生代和老生代,再具体一点可以分为Eden、(又可分为From 和To )、;方法区和堆都是各个线程共享的内存区域,用于存储已经被JVM加载的类信息、常量、静态变量、JIT编译器编译后的代码等数据;程序中的字面量()如直接书写的100、”hello”和常量都是放在常量池中,常量池是方法区的一部分,。栈空间操作起来最快但是栈很小java虚拟机是什么,通常大量的对象都是放在堆空间,栈和堆的大小都可以通过JVM的启动参数来进行调整,栈空间用光了会引发,而堆和常量池空间不足则会引发。

下面我们看一下 JVM运行时数据区():

第一块:PC寄存器

Java程序的运行机制和Java虚拟机 第3张

PC寄存器是用于存储每个线程下一步将执行的JVM指令,如该方法为的,则PC寄存器中不存储任何信息。

第二块:JVM栈

JVM栈是线程私有的,每个线程创建的同时都会创建JVM栈,JVM栈中存放的为当前线程中局部基本类型的变量(java中定义的八种基本类型:、char、byte、short、int、long、float、)、部分的返回结果以及Stack Frame,非基本类型的对象在JVM栈上仅存放一个指向堆上的地址

第三块:堆(Heap)

它是JVM用来存储对象实例以及数组值的区域,可以认为Java中所有通过new创建的对象的内存都在此分配,Heap中的对象的内存需要等待GC进行回收。

第四块:方法区域( Area)

(1)在Sun JDK中这块区域对应的为,又称为持久代。

(2)方法区域存放了所加载的类的信息(名称、修饰符等)、类中的静态变量、类中定义为final类型的常量、类中的Field信息、类中的方法信息java虚拟机是什么,当开发人员在程序中通过Class对象中的、等方法来获取信息时,这些数据都来源于方法区域,同时方法区域也是全局共享的,在一定的条件下它也会被GC,当方法区域需要使用的内存超过其允许的大小时,会抛出的错误信息。

第五块:运行时常量池( Pool)

存放的为类中的固定的常量信息、方法和Field的引用信息等,其空间从方法区域中分配。

第六块:本地方法堆栈( )

JVM采用本地方法堆栈来支持方法的执行,此区域用于存储每个方法调用的状态。

这些可以通过JDK的命令行工具进行查看:可参考

参考:

加入微信交流群:************ ,请猛戳这里→点击入群

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

版权声明:本文由智汇百科网发布,如需转载请注明出处。

本文链接:https://zhihuibkw.com/post/6140.html

分享给朋友:

“Java程序的运行机制和Java虚拟机” 的相关文章

许家印被采取强制措施!恒大集团债务超2万亿

许家印被采取强制措施!恒大集团债务超2万亿

近年来,中国经济领域发生了一起引人瞩目的事件,那就是许家印被采取强制措施,以及恒大集团所面临的巨额债务危机。这一事件不仅对恒大集团自身产生了深远影响,也在一定程度上触动了整个金融市场和社会经济的神经。许家印,曾是中国房地产界的风云人物,他的恒大集团在过去几十年间迅速崛起,成为了中国乃至全球知名的房地...

ChatGPT通过美国医师资格考试!医生:未来将失业

ChatGPT通过美国医师资格考试!医生:未来将失业

近年来,人工智能的发展速度令人瞩目,其中 ChatGPT 作为一种大型语言模型,在自然语言处理领域取得了巨大的成就。最近,有消息称 ChatGPT 成功通过了美国医师资格考试,这一事件引起了广泛的关注和讨论。美国医师资格考试是全球公认的医学专业考试,难度极高,对考生的医学知识、临床技能和职业道德等方...

必知的急救知识:关键时刻能救命

必知的急救知识:关键时刻能救命

在生活中,我们难免会遇到各种突发状况,有时候,一些简单的急救知识可能就能在关键时刻挽救生命。因此,了解和掌握一些必知的急救知识是非常重要的。心肺复苏术(CPR)是急救中最为关键的技能之一。当遇到心脏骤停的患者时,及时进行心肺复苏可以为患者争取宝贵的时间,增加其生存的机会。心肺复苏的操作步骤包括胸外按...

从入门到精通:电脑基础操作知识全解析

从入门到精通:电脑基础操作知识全解析

在当今数字化的时代,电脑已经成为我们生活和工作中不可或缺的工具。无论是日常的办公、娱乐,还是学习和创作,都离不开对电脑的基本操作。本文将从入门到精通,为大家全面解析电脑基础操作知识,帮助你轻松掌握电脑的使用技巧,开启数字世界的大门。一、硬件基础知识1. 主机:电脑的核心部分,包括中央处理器(CPU)...

茶叶知识学会品茶鉴茶

茶叶知识学会品茶鉴茶

茶叶,作为一种古老而神奇的饮品,承载着丰富的文化和历史。学会品茶鉴茶,不仅能让我们领略到茶叶的独特魅力,还能提升我们的生活品质。在这个茶叶知识的世界里,我们将一同探索茶叶的奥秘,学会如何品味和鉴赏每一杯茶。茶叶的种类繁多,常见的有绿茶、红茶、乌龙茶、白茶、黑茶等。每种茶叶都有其独特的制作工艺和风味特...

认识不同类型的云

认识不同类型的云

在广袤的天空中,云朵宛如一幅幅变幻莫测的画卷,它们以各种形态和颜色展现在我们眼前,每一种云都有着独特的特征和意义。让我们一同走进云的世界,去认识那些不同类型的云。首先要说的是积云,这是我们在晴朗天空中最常看到的云之一。积云通常呈现出白色或灰色的蓬松状,形状如同巨大的棉花团。它们常常孤立地飘浮在空中,...