JVM的工作流程

以下是JVM的工作流程:

 

运行时数据区域

1.程序计数器

    通过改变这个计数器的值(行号)来选取下一条需要执行的字节码指令,程序计数器是线程私有的。

    如果执行的是Native方法,计数器的值为Undefined。

2.虚拟机栈

    虚拟机栈也是线程私有的,每一个方法从调用到执行完的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。

    虚拟机栈中包含局部变量表、对象的reference

3.本地方法栈

    和虚拟机栈类似,只不过本地方法栈是为执行Native方法服务。

4.Java堆

    所有线程共享的一块内存区域,用于存放实例对象,也是垃圾回收机制主要管理的区域,堆中包括新生代和老年代。

5.方法区

    有点类似于永久代

 

垃圾收集算法

新生代采用了“复制”算法,一个大的Eden空间(80%)和两个小的Survivor空间(10%)。

老年代采用了“标记-整理”算法。

posted on 2017-07-28 13:44  摩羯的小石头  阅读(139)  评论(0编辑  收藏  举报