名称 | 线程是否共享 | 存放内容 |
---|---|---|
程序计数器 | 线程私有 | 虚拟机字节码 |
虚拟机栈 | 线程私有 | (方法的)局部变量表,操作数栈,动态连接,方法出口 |
本地方法栈 | 线程私有 | (本地方法的)局部变量表,操作数栈,动态连接,方法出口 |
堆 | 线程共享 | 对象实例及数组 |
方法区 | 线程共享 | 类型信息,常量,静态变量,代码 |
补充
运行时常量池
是方法区的一部分,用于存在编译时生成的各种字面量与符号引用
直接内存
直接内存并不是运行时数据区的一部分,也不是Java虚拟机定义的内存区域。本机直接内存的分配不受Java堆大小的限制,但是受本机总内存大小以及处理器寻址空间的限制。
JDK1.4中新加入了NIO,引入一种基于通道与缓冲区的I/O方式,它可以使用Native函数库直接分配堆外内存,使用一个对象作为这块内存的引用进行操作,这样可以避免Java堆和Native堆来回复制数据