透视Java虚拟机 序

        转眼间,做java已经有一些年头了。但是对于Java虚拟机这块理论始终比较含糊,期间也看过不少见相关的书籍和文章,不过总觉得不够清晰,因为毕竟仅仅是从虚拟机的外部的一些介绍,比如一些启动的参数,获取运行时状态的一些命令,再就是关于垃圾回收的一些理论。总觉得深度不够,因为从书上和规范里了解到Java虚拟机本质是一个c++语言的程序,那么既然是程序,肯定内部就是由一些逻辑组成,如果我们能对这个程序进行debug,岂不是就可以从它的内部对其进行清晰地了解,比如它是如何启动的?启动的过程中,都做了哪些事情,分几个阶段,启动完成的标志是什么?就好像我之前研究spring框架的源码的时候的思路一样,先搞清楚其组成部分和启动的流程,其实就已经算是掌握了一半了;另一半就是搞清楚Java虚拟机 的工作状态的全过程,即就是命令java helloworld回车后,jvm虚拟机内部是如何一步步工作的,具体每一步都是怎么做的,比如如何解析字节码,如何翻译成机器码,如何分配内存,如何回收内存,如何进行垃圾回收?这些问题其实只要我们认认真真地跟几遍jvm的源码,岂不是清清楚楚明明白白了。这个道理并不高深,但是遗憾的是,时至今日,市面上已经出版的书籍里面,并没有人通过跟踪源码的方式为我们拨云见日。更多的就是一些理论的堆砌,知识的最大价值在于使用,我觉得我们需要的不仅仅是一些理论知识的说明和解释,更重要的是以程序员的方式为我们呈现出知识本来的样子,我常常在想这么一个画面,如果看完某本书之后,闭上眼睛,如果我的脑海中能出现一个动态工作中的Java虚拟机就好了,因为只有这样,才算是真正把知识给学活了,而现实中的Java虚拟机就是这么活生生的一个理论产物,只是它寄存于操作系统中,很抽象,用理论文字无法精确描述而已,不过我们完全可以通过想象,用类比的方式来对它进行描述。我们可以想想一个汽车的发动机,网上关于发动机工作状态的动画很好找,Java虚拟机就可以用发动机来做一个形象的类比,它的输入就是一堆字节码,输出就是一些底层的命令,去在系统层面执行一系列相应逻辑的调用。而它的内部,就是它的工作机制,也就是我们只有通过跟踪源码才能清楚了解并掌握的运行机制。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章