什么是jvm,这个不需要再介绍了吧.如果连什么是jvm都不知道,那建议你翻翻书再看看吧.这里有个介绍:http://www.matrix.org.cn/article_view.asp?id=20因为最近有空一直都在研究jvm,所以便顺便写个jvm的心得,把自己在开发自己的jvm的过程中的想法和心得记录下拉,让后来者受益.由于实在是太忙,所以不会写的太勤快,不过我会尽力的,大家多多支持.
首先,介绍几本必看的jvm的书给大家:
1.sun的jvm规范,这个是正宗始祖了,不得不看,sun网站上就有.
2.java virtual machine,jon meyer&troy downing写的,orielly出版.欧看的是电子版,书也有,不过电子版似乎也没有免费的,偶看的是交费的电子版,如果有免费电子版一定要告诉我,我懒得去找了:(
3.inside java virtual machine.这个网上有几章是free的,作者说等两个星期把所 有的章节都放上来,可是我等了几个月了还没见其他的章节:(
这三本书基本上是必看了吧,有没有中文翻译不知道,我看的都是英文的,欧觉得jvm的东东直接看英文会有点好处,毕竟你google的时候还知道用什么单词,^_^.
jvm helloworld之前我们先看几个概念:
1. jvm也有自己的指令集,指令集有和cpu类似的地方,比如可以与80x86比较:
80x86的 move AX,10 等价于 jvm里的 bipush 10 把10压栈istore_1 把栈顶的数据取出存入变量1虽然有类似的地方,但是jvm里的指令集却要复杂很多,一共有一百多条(后面的笔记会详细介绍一下这些指令).
2.jvm里,每个method有自己的operand stack和相应的local variable,变量都是通过数字来识别的,从1开始. 对于所有non-static方法,第一个默认的local variable都是: this.
3.一个典型的jvm的组成:
execution engine:核心的执行引擎
memory manager: 管理分配堆,内存.
garbage collection: 垃圾收集
error and exception manager: 负责处理例外.实际上,在jvm里,每个method都有一个对应的exception handler table.
native method support:本地方法支持
thread interface:线程接口,java是内在支持线程的
classloader:类装载器
security manager:安全管理
大致由以上这些部分组成,对于其中每一个部分的实现,我们在后面都会学到.