【JVM】学习总览

Java技术体系

       通常,我们把Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境,甚者,我们以JDK代替整个Java技术体系。另外,可以把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。

       如图所示:
【JVM】学习总览_第1张图片
       这是Oracle官网中,对Java SE技术体系的描述。由上可见,JVM是Java技术体系中JRE这块最核心的一部分(如上,HotSpot是Oracle关于JVM的商标,区别于IBM,HP等厂商开发的JVM),接下来就主要来对JVM进行总结。

JVM总览

      如下图所示,JVM由”ClassLoader,Runtime Data Area,Execution Engine,Native Interface”四部分组成:
【JVM】学习总览_第2张图片
这里我就不重复发明轮子了,参考ImportNew中一篇文章对其组成的解释:http://www.importnew.com/16388.html

1.ClassLoader是负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。

2.Native Interface是负责调用本地接口的。他的作用是调用不同语言的接口给JAVA用,他会在Native Method Stack中记录对应的本地方法,然后调用该方法时就通过Execution Engine加载对应的本地lib。原本多于用一些专业领域,如JAVA驱动,地图制作引擎等,现在关于这种本地方法接口的调用已经被类似于Socket通信,WebService等方式取代。

3.Execution Engine是执行引擎,也叫InterpreterClass文件被加载后,会把指令和数据信息放入内存中,Execution Engine则负责把这些命令解释给操作系统。

4.Runtime Data Area则是存放数据的,分为五部分:StackHeapMethod AreaPC RegisterNative Method Stack。几乎所有的关于java内存方面的问题,都是集中在这块。

       除了上述的JVM的四大组成,我从知识体系构建的角度对JVM进行了另外一层抽象,如图:
【JVM】学习总览_第3张图片

       由上可见,JVM中有三个地方其实应该着重理解:
- 内存
- GC
- 类加载

       接下来的博客,也将会从这三个角度来细致地对JVM进行肢解学习与编制知识网。

你可能感兴趣的:(vincent's,jvm,travel)