首先,要明白JVM是一套标准,那有的小伙伴要问了,平常我们说的JVM虚拟机运行,不就是实际的环境吗?先别急,慢慢来。

  JVM呢,他是指定义虚拟机,可以像正常计算机一样运行程序,它的好处,就是屏蔽一些计算机复杂的细节,另外还可以一次编译可以到处执行;

  目前市面上实现了JVM标准的厂商有hotSpot、JRockit、IBM J9;我们平常使用的oracle jdk和openJdk都是hotSpot,这个就是小伙伴们常说的“JVM”;

  下面我们来说一下常使用的hotSpot VM:

  hotSpot VM主要是由三大部分组成:类加载器、运行时数据区、执行引擎。类加载器就是把编译过后的.class文件,查找和验证后,进行分配内存空间和赋值。运行时数据区就是java代码运行时,所产生的数据存放的空间。主要是由五部分组成:Method Area、Heap、java stack、program counter register、native method stacks,下面逐步介绍这五部分的用处。

  Method Area:方法区,就是平常我们所说的常量池;

  Heap:堆,存放一些对象实例,平常我们new出来的对象就是存放在这;

  java stack:通过线程运行和加载各种的方法;

  program counter register:负责记录每个线程执行的地址;

  native method stacks:本地native方法执行的区域;

  运行时数据区就是通过这五部分进行逻辑的执行和数据的交换。

  下面说下这个执行引擎,他主要是包含JIT compiler 和GC。

  JIT编译器主要有两种,一种是解释执行,他把.class文件当成程序员的输入,不等待全部编译后就直接执行,这样省去了很多编译时间;另外一种就是编译执行,他是一次性读取所有的文件,然后再到计算机中去执行,相对来说,编译执行的效率更高、占用内存更小,hotSpot是两种共同使用的。

  GC就是我们平常所说的垃圾回收器,他把一些无用的资源进行回收,释放资源。垃圾回收算法主要有三种:复制算法、标记清除算法、标记整理算法;这个是可以通过JVM参数进行指定的。

  最后,我们再谈一下JNI,这也是JVM提供的一种技术,我们可以通过JNI调用C或C++的代码,还可以调用动态链接库以及DLL文件等;

  各流程间关系见下图:

 

posted on   一个热爱编程的产品  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示