1. 通过调用某个初始类的main()方法来运行java程序是,就产生了一个虚拟机实例,虚拟机 的体系结构有:类装载器子系统、执行引擎、运行时数据区(方法区、堆、java栈、PC寄存器、本地方法栈)
2. 每个JAVA虚拟机实例都有一个方法区和堆,为所有线程共享,当虚拟机加载Class文件时,从文件的二进制数据中解析出类信息,并发到方法区中,而在运行时创建的对象都放到堆中
3. 当每个新线程被创建时,它都将得到自己的PC寄存器和JAVA栈。如果线程执行的JAVA方法,PC寄存器的值总是指示下一条将被执行的指令,而他的JAVA栈存储JAVA调用的状态--包括局部变量、传入的参数、返回值以及运算的中间结果等等;如果是本地方法,则是某种依赖某种具体实现的方式存储在本地方法栈、寄存器或是特定相关的内存
参考:《深入JAVA虚拟机》87页