转眼间,做java已经有一些年头了。但是对于Java虚拟机这块理论始终比较含糊,期间也看过不少见相关的书籍和文章,不过总觉得不够清晰,因为毕竟仅仅是从虚拟机的外部的一些介绍,比如一些启动的参数,获取运行时状态的一些命令,再就是关于垃圾回收的一些理论。总觉得深度不够,因为从书上和规范里了解到Java虚拟机本质是一个c++语言的程序,那么既然是程序,肯定内部就是由一些逻辑组成,如果我们能对这个程序进行debug,岂不是就可以从它的内部对其进行清晰地了解,比如它是如何启动的?启动的过程中,都做了哪些事情,分几个阶段,启动完成的标志是什么?就好像我之前研究spring框架的源码的时候的思路一样,先搞清楚其组成部分和启动的流程,其实就已经算是掌握了一半了;另一半就是搞清楚Java虚拟机 的工作状态的全过程,即就是命令java helloworld回车后,jvm虚拟机内部是如何一步步工作的,具体每一步都是怎么做的,比如如何解析字节码,如何翻译成机器码,如何分配内存,如何回收内存,如何进行垃圾回收?这些问题其实只要我们认认真真地跟几遍jvm的源码,岂不是清清楚楚明明白白了。这个道理并不高深,但是遗憾的是,时至今日,市面上已经出版的书籍里面,并没有人通过跟踪源码的方式为我们拨云见日。更多的就是一些理论的堆砌,知识的最大价值在于使用,我觉得我们需要的不仅仅是一些理论知识的说明和解释,更重要的是以程序员的方式为我们呈现出知识本来的样子,我常常在想这么一个画面,如果看完某本书之后,闭上眼睛,如果我的脑海中能出现一个动态工作中的Java虚拟机就好了,因为只有这样,才算是真正把知识给学活了,而现实中的Java虚拟机就是这么活生生的一个理论产物,只是它寄存于操作系统中,很抽象,用理论文字无法精确描述而已,不过我们完全可以通过想象,用类比的方式来对它进行描述。我们可以想想一个汽车的发动机,网上关于发动机工作状态的动画很好找,Java虚拟机就可以用发动机来做一个形象的类比,它的输入就是一堆字节码,输出就是底层的命令触发的任务,去在系统层面执行一系列相应逻辑的调用。而Java虚拟机内部的工作机制,我们就只有通过跟踪源码才能清楚了解并掌握的运行机制。
码农杂谈第167期 透视Java虚拟机 序
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 今天恰逢周末,可以稍微静一静,整理整理过去,沉淀沉淀思想,整装待发,即将迎来全新的一周。刚刚过去的一周,收获还是很...