Jvm组成结构
硬件体系(如Intel体系、spac等)——>操作系统(如Windows、Linux等)——>Java Virtual Machine 所以虚拟机与硬件系统并没有直接的交互。
Class Loader类加载器:
负责加载类文件,是否可以运行由执行引擎决定。
Native Interface:
本地接口的作用:融合不同的编程语言为Java所用,如c/c++程序,并且在内存中专门开辟了一块内存空间用来处理标记为native的代码。
目前,使用较少,除非和硬件打交道,如java驱动打印机。
Method Area:
被所有线程共享,所有的字段和方法字节码,以及一些特殊方法,如构造方法,接口也在此定义。简单说,所有的定义的方法的信息都保存在该区域,此区间属于共享区域。
PC Register:
每个线程都有一个计数器,就是一个指针,指向方法区中的方法字节码,由执行引擎读取下一条指令,占得内存极小,几乎可以忽略不计。
Native Method Stack 本地方法栈
具体做法是先登记,在执行时,加载Native libraies。
优化问题:在共享区域优化,其他区域不优化。 99%优化的是堆,1%优化的是方法区区。