首先,整张Java与JVM的关系图:
Java要跨平台运行,就需要中间层来屏蔽不同的操作系统,这哥们就是JVM,Java虚拟机;
再来张JVM结构图:
jvm准备java执行,要把class文件,类信息、常量解析到方法区,
jvm执行引擎执行java方法,记录当前字节码执行的位置,就是程序计数器,native方法不在这;
jvm线程执行时的执行栈,如果是java方法,就记录在虚拟机栈,native方法则在本地方法栈;
jvm线程运行需要分配、回收内存,jvm使用堆管理对象(数组),牵扯不同的垃圾收集算法、收集器。
至于java的解释 || 编译执行,基于栈的指令集,对象OOPS映射,木有讨论。
来张HotSpot的源码结构图面: