理解JVM的原理及作用

理解JVM的原理及作用


前言

这几天都在了解JVM这个东西,这里细节不详谈,大家想要详细理解JVM请点击下面大佬们的链接:
https://www.cnblogs.com/lishun1005/p/6019678.html
https://segmentfault.com/a/1190000002579346
https://segmentfault.com/a/1190000014267944

JVM原理

JVM原理,简单的讲,就是JVM怎么使Java程序在各种平台上运行的。

(1)一个Java源程序,经过JDK中的javac(Java语言编译器)编译成.class文件,也就是常说的字节码文件,怎么编译的,借张图说话
理解JVM的原理及作用_第1张图片

注:以下才是JVM该做的

(2).class文件要运行,需要有内存,所以就要装入内存,装入内存就要用到JVM中的类加载器 classloader,它长什么样,借文章
《为什么要类加载器,类加载器做了什么,加载类的过程》

(3)类加载器做了很多,.class文件的信息这时候已经合理的安排在内存(高级点是不是叫运行时数据区,这个又分为六个区域)了,这时候就该运行它了,JVM的执行引擎(解释器)通过解释执行的方式边解释边执行代码,把字节码解释成具体平台上的机器指令,交由操作系统执行。

(4)在JVM运行的时候,为了能高效合理的运用内存,在堆中有一个守护线程GC(垃圾回收机制),当然GC除了做回收内存之外,还做内存的压缩,但性能不好。

JVM作用

JVM是它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。
Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,
使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),
就可以在多种平台上不加修改地运行。
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
这就是Java的能够“一次编译,到处运行”的原因。

注:第一次写博客,知识还浅薄,有什么不对的地方请大家提出来斧正,或者大家有什么更好的看法欢迎你们提出来,也可以互相学习讨论。


你可能感兴趣的:(Java,后端)