JAVA虚拟机:内存区域

Posted ywd979

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA虚拟机:内存区域相关的知识,希望对你有一定的参考价值。

根据《java虚拟机规范第二版》规定,现阶段的java内存区域总体如下图
技术分享图片

其中,方法区和堆是所有线程共享区域。 虚拟机栈,本地方法栈,程序计数器是各线程独占。

概述一下各个区域

先说说线程私有的几个区域:

1.程序计数器

1.当前线程所执行的字节码的行号指示器,通过改变这个计数器的值来选取下一条需要执行的指令。由于java虚拟机多线程通过线程切换轮流执行,所以为了线程切换以后能恢复到正确的位置开始执行,所以每一条线程都有自己的程序计数器。
2.其中:如果当前线程执行的是java方法,那么记录器记录的是虚拟机字节码指令的地址,如果是native方法,那么这个值为空。
3.它是java虚拟机规范中唯一一个没有定义OutOfMemoryError情况的区域。




以上是关于JAVA虚拟机:内存区域的主要内容,如果未能解决你的问题,请参考以下文章

深入理解java虚拟机系列:java内存区域与内存溢出异常

深入Java虚拟机之一:Java内存区域与内存溢出

Java虚拟机之Java内存区域

Java内存区域 - 深入Java虚拟机读后总结

Java虚拟机--Java内存区域

Java内存区域 - 深入Java虚拟机读后总结