1. Java代码编译和执行的整个过程包含了三个重要的机制:
2. 关于Java源码编译机制
Java源码编译由以下三个过程组成:
生成的class文件包括的信息有:
JVM的类加载时通过ClassLoader及其子类来完成的,类的层次关系和加载顺序如下图:
3. Java 类执行机制
JVM是基于栈的体系结构来执行 Class 字节码的,线程创建之后,都会产生程序计数器(PC)和栈(Stack),程序计数器存放下一条要执行的指令在方法内的偏移量,栈中存放一个个栈帧,每个栈帧对应着每个方法的每次调用,而栈帧又是局部变量区和操作数栈两部分组成,局部变量区用于存放方法中的局部变量和参数,操作数栈中用于存放方法执行过程中产生的中间结果。
4. JVM内存组成结构
JVM内存由堆、栈、本地方法栈、方法去等部分组成
堆 所有通过new创建的对象的内存都在堆中分配,其大小可以通过 -Xmx 和 -Xms 来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为 Eden 和 Survivor 区,最后 Survivor 由 From Space 和 To Space 组成。
新生代:新建的对象都是用新生代分配内存,Eden空间不足的时候,会把存活的对象转移到Survivor中,新生代大小可以由 -Xmn来控制, 也可以用 --XX:SurvivorRatio 来控制 Eden 和 Survivor 的比例;
旧生代:用于存放新生代中经过多次垃圾回收仍然存活的对象
原文:http://www.cnblogs.com/xbingxin/p/3962696.html