前言
道阻且长,行则将至。我希望用我的文章能够能让各位学习java的伙伴有所收获,也希望我们能一起坚持下去,朝着各自的理想。
一,为什么要学习jvm
在学习java的路线上,jvm的知识点实际涉及到的并不多,但我们为什么还要学习呢?相信有很多初学者也很排斥,但是我觉得jvm是必修的课程,在这jvm的学习道路上,我受益良多。
学习jvm的好处:
1. 面试中的常客jvm,特别是想进大厂的小伙伴,据我观察,大厂java岗位,岗位要求上都有熟悉jvm这一条件。
2. 深入理解java这门语言。
3. 熟悉底层,方便排错,不要停留在API层面,更应该去懂得一些API的规则是如何产生的。
4. 将来提升自己的必需品,如果想成为高级程序员,这些底层知识都需要熟悉的。
在学习jvm的过程中,你会感觉到你的视野变得广阔,一些原理性的东西其实也是很有趣的。
二,走进jvm
java到现如今得到如此广泛的认可,主要得益于它的: ①“一次编写到处运行”理念 ②提供相对安全的内存管理和访问机制,避免了操作失误导致的内存泄漏和指针越界问题 ③实现了热点代码检测和运行时编译及优化,使得java能给随着运行时间的增长得到更高的性能。
这几点,毋庸置疑也是jvm实现的。
常见的jvm
Hotspot:官网上下的基本都是这个,免费的。
J9t:IBM的,商用的需要和IBM的其他软件绑定,比如webSphere。
Zing VM:这也是收费的,而且很高,垃圾回收做的很牛,很变态。
JRockitt:老人们应该比较熟悉。
java虚拟机现如今Hotspot占据主流,是JDK的默认虚拟机,我们主要需要学习的就是这一款虚拟机,其他的做一定的了解即可。
即时编译器
java比较接近解释型语言的特征,但在执行前进行了一次预编译(也就是.java文件到.class文件的过程),class文件基于机器码和源代码之间,依靠jvm解释执行。
Hotspot虚拟机采用了比解释型语言高级的混合模式,在运行过程中,一行一行的解释每条语句并运行(解释),将其中的热点代码会被JIT即时编译器直接编译成机器码(编译),热点代码包括循环和多次执行的方法等。这样java运行效率也就提高了。
三,学习路线
这是jvm学习所需的一些知识点,这些都是重点,今后我们会围绕着这一路线进行学习。