java的内存区域

2016-08-25  本文已影响36人  eagleRock

java的内存区域有哪些

|| 作用 | 线程 |
|----|:-----:|:----:| :----:|
|程序计数器|记录要执行的下一条字节码指令 | 私有 |
|虚拟机栈| 存放局部变量表操作数栈动态链接方法出口等信息 | 私有 |
|本地方法栈| 为Native方法服务 | 私有 |
|Java堆| 唯一的目的就是存放java对象实例| 共享 |
|方法区| 存放被加载的类信息常量静态变量即时编译器编译后的代码等 | 共享 |
| 运行时常量池| 方法区的一部分存放字面量和符号引用 | 共享 |
|直接内存| 用于Java的NIO的直接内存方法 | 共享 |

java对象的创建过程

java对象的创建从语言层面来看,只要通过new即可创建一个对象。而虚拟机做的工作是:先从常量池中找到类的符号引用,再去方法区寻找类的信息。如果类还没有被加载过,则先加载类的信息。再从java推中分配内存创建对象。分配内存的策略一般有两种,一种是指针碰撞;一种是空闲列表。两种的使用取决于java堆内存是否规整,是否规整取决于垃圾收集器是否有压缩整理java堆的功能。

上一篇 下一篇

猜你喜欢

热点阅读