JVM内存模型

来源:互联网 发布:androidndkr10e mac 编辑:程序博客网 时间:2024/06/16 04:24

java虚拟机,简称JVM,是执行java字节码文件的操作系统进程。

JVM的内存模型分为五大部分,分别是虚拟机栈,本地方法栈,程序计数器,堆和方法区。其中虚拟机栈,本地方法栈,程序计数器是线程私有的,也就是每个线程都有这三部。而堆和方法区是所有线程共享的。

1、程序计数器

程序计数器就是记录当前线程执行到的位置,也就是下一条需要执行的指令。

2、虚拟机栈

虚拟机栈是线程运行的核心。每调用一个方法的时候,就会创建一个栈帧并压入虚拟机栈中,每个栈帧中会存在一个局部变量表和操作数栈,用于存放在执行方法时的变量、参数和中间结果。

3、本地方法栈

本地方法栈和虚拟机栈类似,存放native方法调用的状态。

4、堆

堆内存存放的是对象,及new出来的对象。程序中对象往往是最多的,所以堆内存也是最大的。堆内存也分为两个部分,一个是新生代,另外一个是老年代,新生代存放的是短时间存在的对象,而老年代则相反。默认情况下新生代和老年代的空间大小比例为1:2。新生代也分为两个个部分,分别是Eden和survivor,而survivor又分为Fromsurvivor和Tosurvivor,也就是新生代分为Eden,Fromsurvivor,Tosurvivor,其大小比例默认为8:1:1,这样分的好处是gc更快的回收内存。

5、方法区

方法区用于存放加载的java类信息、静态变量、final类型的常量、属性和方法。

原创粉丝点击