JVM,一个熟悉又陌生的名词,从认识Java的第一天起,咱们就会听到这个名字,在参加工做的前一两年,面试的时候还会常常被问到JDK,JRE,JVM这三者的区别。html
JVM能够说和咱们是老朋友了,可是在工做中的应用场景也许不如那些框架,可是在关键时候仍是得靠它去搞定问题,俗话说得好,知己知彼,方能百战不殆,JVM做为前往高级工程师的一道坎,从这篇文章开始,咱们会去逐步的分析,讲解,攻克这座大山。java
JVM(Java Virtual Machine),翻译成中文就是Java虚拟机,总所周知,Java语言有一个很是鲜明的特性,也是前期Java 发展的口号之一面试
Write Once Run Everywhere多线程
"一次编写,处处运行",相信做为一名Java开发人员,咱们对这句话都不会陌生,这句话的底气就来源于咱们的JVM。并发
其中的原理就是,咱们所编写的源程序java文件,被编译成了JVM能够识别的字节码文件(以class为后缀的文件),处处运行所依赖的其实就是为不一样的平台实现了不一样的虚拟机。框架
java的程序运行在JVM上,而非直接运行在CPU上。工具
首先,咱们须要知道的是,做为一个虚拟机,一定是拥有本身的内存机制,因此咱们必须对他的内存机制有所了解,其中包括了内存结构,垃圾回收机制等一些内容。学习
其次,咱们须要知道,咱们写的源代码被翻译成了字节码文件(因其后缀名为class,因此也会被称为类文件),对于这个文件的结构,咱们必须有所了解,在知道了该类的结构下,对于一些并发和多线程的知识才能作到洞若观火,知其然知其因此然。spa
该字节码文件在进入虚拟机到执行以前,会经历一系列的过程,咱们对于这个过程的机制通常称为类加载机制,当这个类被加载到JVM中,在运行的过程当中,会有一系列的指令去帮助程序到达最终的目的。线程
其实,上面说了那么多,都是在帮助咱们对于java文件的一个执行过程发生的事情有一个更深的了解,在遇到问题时,咱们能够成竹在胸,刨根问底的去解决问题,可是在平常工做中,咱们不会甚至确定不会去看咱们写完的字节码文件,咱们关心的是如何使用工具去调优,使最低的成本发挥最高的价值,经过对JVM的调优使咱们的程序的鲁棒性获得提高。
虽然,JVM叫作Java Virtual Machine,可是须要注意,随着Java的发展壮大,有愈来愈多的语言加入到JVM生态中,好比咱们耳熟能详的Groovy,Scala,Kotlin等等,他们都是依托于JVM平台的,编译产生的文件也都是后缀为class的字节码文件。
当亲爱的读者大人看到这篇文章的时候,说明Vi的技术博客的JVM系列已经开启更新,以前的Spring Boot系列暂告一段落(后续会不按期更新),同时最开始接触写做时写的Java基础系列也会迎来一次回炉重造,敬请期待。
很庆幸可以遇到大家,谢谢大家一直以来的支持和陪伴 :)
原文出处:https://www.cnblogs.com/viyoung/p/11248180.html