Java虚拟机内存区域

来源:互联网 发布:java快速排序优化 编辑:程序博客网 时间:2024/05/17 01:49
内存区域组成:
方法区(Method Area、虚拟机栈(VM Stack)、本地方法栈(Native Method Stack)、堆(Heap、程序计数器(Program Couter Register)。
红色:由所有线程共享的数据区。
黑色:线程隔离的数据区。

程序计数器:是一块较小的内存空间,可以看作是线程所执行的字节码的行号计数器。

虚拟机栈:是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧用户存储局部变量表、操作数栈、动态链接、方法出口等信息。
局部变量表:存放基本数据类型和指向引用类型的地址。局部变量表是在编辑期间完成分配,所以在运行期间局部变量表的运行大小是不发生变化的。

本地方法栈:同虚拟机栈,区别:虚拟机栈为虚拟机执行Java方法、本地方法栈为虚拟机提供本地方法

堆:是Java虚拟机所管理的内存中最大的一部分,Java堆是被所有线程共享的一块内存区域,目的存储对象实例。堆是Java垃圾回收主要管理的区域。

方法区:也是线程共享的,主要用于存储类信息、常量、静态变量、即时编译器编译后的代码等数据。

运行时常量池:是方法区的一部分,除了可以加载固定常量外,在运行期间也可以将新的常量放入池中。
0 0
原创粉丝点击