摩根面试准备要点1
JVM架构(Vincent)主要包括两个子系统和两个组件:Classloader(类装载器)子系统,Executionengine(执行引擎)子系统;Runtimedataarea(运行时数据区域)组件,Nativeinterface(本地接口)组件
Classloader子系统的作用:根据给定的全限定名类名(如java
Object)来装载class文件的内容到Runtimedataarea中的methodarea(方法区域)
Javsa程序员可以extendsjava
ClassLoader类来写自己的Classloader
Executionengine子系统的作用:执行classes中的指令
任何JVMspecification实现(JDK)的核心是Executionengine,换句话说:Sun的JDK和IBM的JDK好坏主要取决于他们各自实现的Executionengine的好坏
每个运行中的线程都有一个Executionengine的实例
Nativeinterface组件:与nativelibraries交互,是其它编程语言交互的接口
Runtimedataarea组件:这个组件就是JVM中的内存
下面对这个部分进行详细介绍
Runtimedataarea的整体架构图Runtimedataarea主要包括五个部分:Heap(堆),MethodArea(方法区域),JavaStack(java的栈),ProgramCounter(程序计数器),Nativemethodstack(本地方法栈)
Heap和MethodArea是被所有线程的共享使用的;而Javastack,Programcounter和Nativemethodstack是以线程为粒度的,每个线程独自拥有
HeapJava程序在运行时创建的所有类实或数组都放在