java内存区域初窥

2017-04-07  本文已影响19人  我吃草莓

运行时数据区域

jvm.png

程序计数器

程序计数器 (Program Counter Register) 是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型(各种虚拟机可能会通过更高效的字节码去实现)里,字节码解释器工作时就是通过改变这个计算器的值来选取 下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。

java虚拟机栈

java虚拟机栈 (Java Virtual Machine Stacks) 描述的是java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态连接、方法出口等。

本地方法栈

与java虚拟机栈所发挥的作用非常相似,本地方法栈 (Native Method Stack) 是为虚拟机所使用的native方法服务。

java堆

一般来说,java堆 (Java Heap) 是java虚拟机所管理的内存最大的一块,此区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。

方法区

方法区(Method Area)是用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

运行时常量

运行时常量是方法区的一部分,Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。

上一篇下一篇

猜你喜欢

热点阅读