Java虚拟机原理

上一篇 / 下一篇  2009-09-16 22:14:13 / 个人分类:Java

今天仔细研读了一下关于Java虚拟机的机制

1.JVM的生命周期
  当应用程序启动的时候,JVM就开始建立,知道应用程序结束的时候,JVM关闭

2.JVM有两个线程,一个是守护线程,一个是非守护线程。JVM虚拟机使用的是守护线程,对于应用程序的main函数入口则是使用非守护线程。用户自己建立的线程也可以标记为守护线程

3.JVM结构
JVM主要由三部分组成,
1.ClassLoader:类装载器
2.Execute Engine:执行被装载的类中的代码
3.Runtime Data Areas:JVM运行中需要在内存中存储的数据

再具体分析一下Runtime Data Areas
1.Method和Heap 由Java实例中所有的Thread共享
2.Java Stack和PC Register是线程私有的,每个线程都有其独立的Java Stack和PC Register
3.Native Method Stack 当使用本地方法的时候调用

4.JVM中的数据类型
在JVM的数据类型中比较特别的就是boolean的类型,在编译成class后,boolean是用int来表示的,对于boolean数组类型,是用byte数组来表示的

5.ClassLoader的装载顺序
  BootStrap -> ExtClassLoader -> UrlClassLoader -> AppClassLoader
装载顺序采用的委托机制,先从父类装载器开始寻找Class,接下去是子类装载器,如果最后还是找不到,就会抛出一个ClassNotFoundError
  BootStrap是JVM的根类装载器,它会装载一些核心的jar包

  JVM的委托机制也是一种安全机制,对于一个会对系统产生破坏的String类型,如果不是用委托机制,就可以被加载到系统中去,但是如果是委托机制,就不会被加载到系统中

7. PC Registerde 的大小是是一个字长,内容是下一个java的指令的地址。


TAG:

 

评分:0

我来说两句

Open Toolbar