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

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

admin9小时前知识普及2

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://www.zhihuibkw.com/post/6140.html

分享给朋友:

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

知识普及:[知识类型] 对生活的重要影响

知识普及:[知识类型] 对生活的重要影响

健康,是人类永恒的追求,是生活幸福的基石。知识普及:健康知识,犹如一盏明灯,照亮我们通往健康生活的道路,对我们的生活产生着多方面至关重要的影响。健康知识能帮助我们树立正确的健康观念。在日常生活中,很多人对健康的理解往往局限于身体没有疾病,而忽视了心理健康、生活方式等方面的重要性。通过健康知识的普及,...

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

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

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

法律常识维护自身权益的武器

法律常识维护自身权益的武器

在生活的舞台上,我们每个人都可能遭遇各种权益被侵犯的情况,无论是在消费领域、职场之中,还是在日常生活的点滴之中。当权益受到侵害时,我们不能只是默默忍受,而应拿起法律这一强大的武器,来捍卫自己的合法权益。法律常识就如同我们手中的利剑,能在关键时刻为我们劈开迷雾,指引我们走向公正的道路。了解基本的法律概...

茶叶知识学会品茶鉴茶

茶叶知识学会品茶鉴茶

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

学习简单的急救包扎方法

学习简单的急救包扎方法

在生活中,意外和突发状况时有发生,掌握一些简单的急救包扎方法能够在关键时刻挽救生命、减轻伤痛。以下是关于学习简单急救包扎方法的详细介绍。一、绷带包扎法绷带是急救包扎中最常用的工具之一,它可以固定敷料、止血、减轻肿胀等。1. 环形包扎法这是最基本的绷带包扎法,适用于肢体粗细均匀的部位,如手腕、小腿等。...

认识中国传统节日的由来

认识中国传统节日的由来

中国是一个拥有悠久历史和灿烂文化的,传统节日便是这文化宝库中的璀璨明珠。这些节日承载着中华民族的传统习俗、价值观念和精神内涵,历经千年而不衰,至今仍深深影响着我们的生活。春节,是农历新年的开始,也是中国最重要的传统节日。据传说,春节的由来与一个叫“年”的怪兽有关。“年”兽凶猛异常,每到除夕便会出来吞...