Java虚拟机运行时数据区
2019-12-26 14:05:43 4 举报
Java虚拟机运行时数据区
作者其他创作
大纲/内容
程序计数器(Program Counter Register)
由所有线程共享的数据区
线程隔离的数据区
堆(Heap)
运行时常量池(Runtime Constant Pool)
直接内存(Direct Memory):并不是虚拟机运行时数据区的一部分,也不是JVM规范中定义的内存区域。JDK1.4中新加入了NIO(New Input/Output)类,引入了基于通道(Channel)与缓冲区(Buffer)的I/O方式,它可以使用Native函数库直接分配堆外内存,然后通多一个存储在Java堆中的DirectByteBuffer对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在Java堆和Native堆中来回复制数据。
方法区(Method Area)
运行时常量池是方法区的一部分。用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进行方法区的运行时常量池中存放。
Java 虚拟机运行时数据区
JVM规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆)针对HotSpot虚拟机来说,很多人会把“方法区”称为“永久代”(Permanent Generation),本质上两者并不等价,仅仅是因为HotSpot虚拟机的设计团队选择把GC分代收集扩展至方法区,或者说使用永久代来实现方法区而已,这样HotSpot的垃圾收集器可以像管理Java堆一样管理这部分内存,能够省去专门为方法区编写内存管理代码的工作。
本地方法栈(Native Method Stack)
虚拟机栈(VM Stack)
收藏
0 条评论
下一页