java - 内存区域

2017-11-15  本文已影响19人  小菜_charry

java 会将内存划分为几个不同的数据区域.

java虚拟机运行时数据区

1. 程序计数器

用来记录程序运行到哪里了,下一步又该执行哪一步操作.

2. Java 虚拟机栈

用来存储Java方法运行过程中使用的栈数据(栈帧).
栈帧主要包括:局部变量表和操作数栈。

3. 本地方法栈

为虚拟机使用到的Native方法服务(与虚拟机栈基本类似,只是服务对象不同)

4. java 堆

存放对象实例

5. 方法区

用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据

6. 运行时常量池

方法去的一部分,存放编译器生成的各种字面量和符号引用.

7. 直接内存

并不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域,但是这部分内存也被频繁地使用,而且也可能导致OutOfMemoryError异常出现.

参考:
《深入理解Java虚拟机 JVM高级特性与最佳实践》 第二章

上一篇 下一篇

猜你喜欢

热点阅读