对jvm的历史不做过多介绍,感兴趣的同学可以去自行搜索。
我们直接以HotSpot VM(Virtual Machine)举例。
why 为什么要有虚拟机?
举一个形象的例子:手机现在几乎是人手一台的电子通讯工具,不同品牌型号的手机很可能会使用不同的充电接口,Micro USB、Type-C、Lightning等等接口。
相信大家都见过这种充电线,这种充电线能够同时适配三种型号的充电接口。
这也是虚拟机的主要作用,为了能适配更多的语言和系统。
what 什么是虚拟机?
顾名思义,在计算机的操作系统里面虚拟出来的计算机系统。
虚拟机的职责是将字节码翻译成对应系统能够识别并执行的机器码,
比如在linux系统,java文件被javac编译器翻译成字节码文件(class文件),jvm将字节码文件翻译成linux能够识别并执行的机器码文件,这样java程序便能够被运行起来了。
java文件是咱人类能看懂的文件,字节码文件是虚拟机能看懂的文件,机器码文件是CPU能看懂的文件。
若是在windows系统,JRuby代码被jrubyc编译器翻译成字节码文件,jvm将字节码文件翻译成windows能够识别并执行的机器码文件,这样JRuby程序便能够被运行起来了。
因此便实现了“一次编译,到处运行(Write Once,Run Anywhere)”。
how 虚拟机如何工作?
1. 解释执行。JVM能够将Java字节码,并解释执行。
2. 内存管理。JVM负责管理Java程序的内存使用,包括分配内存、垃圾回收等操作。
3. 安全管理。JVM通过安全管理器对Java应用程序进行安全审查,保证程序在执行时不会对系统产生危害。
4. 多线程支持。JVM可以处理多个线程并发执行,提高程序的效率和性能。
为什么写文章(若有错误,希望得到你的指正,若有问题,都可评论,我将会积极回复)
在作者刚入行时,会遇到很多无法理解的问题,便经常向前辈请教问题,或是于网络之中苦苦寻找答案,经常被一些晦涩难懂的表达折磨的死去活来,现作者是一名拥有多年经验的IT从业者,希望能够将自己的知识以一种形象的方式输出,先从虚拟机开始分享,之后会写更多的专栏,最新的分享将会先在公众号发布,谢谢读者的关注
文章来源: 博客园
- 还没有人评论,欢迎说说您的想法!