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