三九宝宝网宝宝百科宝宝知识

深入理解java虚拟机应届生需要理解到什么程度

02月08日 编辑 39baobao.com

[怎么做阅读理解啊]阅读理解要求比较多 1:平时有大量的英语阅读积累 2:在读的时候要把握全篇,特别是让你选文章题目的时候,这时眼光要放大 3:科技阅读可以先看选项再在问中找答案 4:留心英美国家文化...+阅读

从进程的角度解释JVM 让我们尝试从操作系统的层面来理解虚拟机。我们知道,虚拟机是运行在操作系统之中的,那么什么东西才能在操作系统中运行呢?当然是进程,因为进程是操作系统中的执行单位。可以这样理解,当它在运行的时候,它就是一个操作系统中的进程实例,当它没有在运行时(作为可执行文件存放于文件系统中),可以把它叫做程序。

对命令行比较熟悉的同学,都知道其实一个命令对应一个可执行的二进制文件,当敲下这个命令并且回车后,就会创建一个进程,加载对应的可执行文件到进程的地址空间中,并且执行其中的指令。下面对比C语言和Java语言的HelloWorld程序来说明问题。首先编写C语言版的HelloWorld程序。[cpp] view plaincopy#include#includeint main(void) { printf("hello world\n"); return 0; } 编译C语言版的HelloWorld程序:[plain] view plaincopy gcc HelloWorld.c -o HelloWorld 运行C语言版的HelloWorld程序:[plain] view plaincopy zhangjglinux:/deve/workspace/HelloWorld/src$ ./HelloWorld hello world gcc编译器编译后的文件直接就是可被操作系统识别的二进制可执行文件,当我们在命令行中敲下 ./HelloWorld这条命令的时候, 直接创建一个进程, 并且将可执行文件加载到进程的地址空间中, 执行文件中的指令。

作为对比, 我们看一下Java版HelloWord程序的编译和执行形式。首先编写源文件HelloWord.java :[java] view plaincopy public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld"); } } 编译Java版的HelloWorld程序:[java] view plaincopy zhangjglinux:/deve/workspace/HelloJava/src$ javac HelloWorld.java zhangjglinux:/deve/workspace/HelloJava/src$ ls HelloWorld.class HelloWorld.java 运行Java版的HelloWorld程序:[plain] view plaincopy zhangjglinux:/deve/workspace/HelloJava/src$ java -classpath . HelloWorld HelloWorld 从上面的过程可以看到, 我们在运行Java版的HelloWorld程序的时候, 敲入的命令并不是 ./HelloWorld.class 。

因为class文件并不是可以直接被操作系统识别的二进制可执行文件 。 我们敲入的是java这个命令。 这个命令说明, 我们首先启动的是一个叫做java的程序, 这个java程序在运行起来之后就是一个JVM进程实例。 上面的命令执行流程是这样的:java命令首先启动虚拟机进程,虚拟机进程成功启动后,读取参数“HelloWorld”,把他作为初始类加载到内存,对这个类进行初始化和动态链接(关于类的初始化和动态链接会在后面的博客中介绍),然后从这个类的main方法开始执行。

也就是说我们的.class文件不是直接被系统加载后直接在cpu上执行的,而是被一个叫做虚拟机的进程托管的。首先必须虚拟机进程启动就绪,然后由虚拟机中的类加载器加载必要的class文件,包括jdk中的基础类(如String和Object等),然后由虚拟机进程解释class字节码指令,把这些字节码指令翻译成本机cpu能够识别的指令,才能在cpu上运行。从这个层面上来看,在执行一个所谓的java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程,而不是我们写的一个个的class文件。

这个叫做虚拟机的进程处理一些底层的操作,比如内存的分配和释放等等。我们编写的class文件只是虚拟机进程执行时需要的“原料”。这些“原料”在运行时被加载到虚拟机中,被虚拟机解释执行,以控制虚拟机实现我们java代码中所定义的一些相对高层的操作,比如创建一个文件等,可以将class文件中的信息看做对虚拟机的控制信息,也就是一种虚拟指令。

以下为关联文档:

如何做好语文阅读理解第一,一定要记好老师说的阅读解题方法,说明文,议论文,散文等等,各种题型的答题方法老师都应该会讲,一定要记住,如果记熟的话,做说明文应该可以不丢分或只扣一两分。 第二,说明文以外...

外科书第八版37页高钠血症也可引起血压下降怎么理解一、高血压病因不明,与发病有关的因素有 1.年龄:发病率有随年龄增长而增高的趋势,40岁以上者发病率高。 2.食盐:摄入食盐多者,高血压发病率高,有认为食盐20g/日发病率30%。 3.体重...

古诗鹿柴的意思怎么理解1、这首诗的意思为:空寂的山谷中看不见人影,却能听见人讲话的声音。落日的余辉射入幽暗的深林,斑斑驳驳的树影映在青苔上。 2、《鹿柴》是唐代诗人王维的作品。这首诗写一座人...

化学平衡状态可以类比哪些生活实例去理解化学平衡状态具有逆,等,动,定,变等特征。 逆:化学平衡研究的对象是可逆反应。 等:平衡时,正逆反应速率相等,即v正=v逆。 动:平衡时,反应仍在进行,是动态平衡,反应进行到了最大程度。 定:...

怎样做好考研英语阅读理解一、充分了解英语阅读考研中阅读的目的是迅速准确获取所需的知识和信息,回答文章后所附的问题,充分展示考生综合运用英语这门语言的能力,而不是理解和掌握文章的全部内容。 二...

教案中的教学重点与关键怎么理解一、教学重点和难点问题,主要是指关于如何确定教学的重点和难点、采用什么方式方法去突出重点和突破难点的问题。具体而言,它主要包括以下几个问题:什么是教学的重点和难点?解决...

如何理解追求卓越走向成功的深刻含义一个人能够经历一些成功到达一些山峰,也应该经历低谷,面对生死,绝境,此时你还能坚持自己,认识自己,去追求一种安宁,活成真诚的自己,去努力做好自己能做的事情我想这是一种极致的卓越...

小学五年级了如何才能提高孩子的阅读理解能力语文是我们学科中至关重要的一科,语文的成绩分量也是举足轻重的.学好语文知识对于未来的生活、学习都有很大的帮助.语文试卷中最难的题目就是阅读理解,那我们该怎样给孩子进行...

如何教孩子做阅读理解满意答案じ☆忘忧草—12级2009-11-05 培养孩子说话和阅读的能力对孩子而言、从小加强对孩子的语言能力和阅读能力的训练、不仅能够促进孩子语言能力、交际能力、自我表现能...

推荐阅读
图文推荐