java虚拟机
1.java虚拟机的生命周期 当启动一个java程序时,一个虚拟机实例也就生成了,当该程序关闭退出,这个虚拟机实例也就随之消亡。 java虚拟机内部有两种线程 ,守护线程和非守护线程,守护线程是执行垃圾收集的线程,而java程序中的初始线程-就是开始于main()方法的那个,是非守护线程。当该程序中的所有非守护线程都终止时,虚拟机实例将自动退出。 2.java虚拟机的体系结构 类装载子系统,执行引擎,运行时数据区 (方法区,堆,java栈,pc寄存器,本地方法栈)。每个java虚拟机实例都有一个方法区以及一个堆,它是所有线程共享的。当虚拟机装载一个class文件时,它会从这个class文件包含的二进制数据中解析类型信息,然后把类型信息放到方法区中,堆里面放的是对象。 当一个新线程被创建时,它将得到它自己的pc寄存器(程序计数器)以及一个java栈,pc寄存器的值总是指示下一条将被执行的指令,而它的java栈则总是存储该线程中java方法的调用状态(包括局部变量,被调用时传进来的参数,它的返回值,以及运算的中间结果)。 3.类装载器子系统 java虚拟机有两种类装载器 :启动类装载器和用户自定义类装载器, 4.方法区 类的类型信息,类型的常量池,字段信息,方法信息,除了常量以外的所有类变量,一个到类classLoader的引用,一个到class类的引用 a。常量池