起首看图:
java相干视频教程:java课程
1.顺序计数器(PC)
是线程独享的。是一块较小的内存,是当前线程所实行的字节码的行号指示器,是Java虚拟机范例中唯一没有被划定OOM(OutOfMemoryError)的地区。
2.Java虚拟机栈
是线程独享的。生命周期和线程雷同。是Java要领实行的内存模子。实行每一个要领都邑建立一个栈帧,用于存储局部变量和操作数(对象援用)。局部变量所须要的内存空间大小在编译时期完成分派。所以栈帧的大小是不会转变的。
存在两种异常情况:
1)若线程要求深度大于栈的深度,会抛出StackOverFlowError。
2)若栈在动态扩大的时刻没法要求充足的内存,会抛出OOM。
3.堆
Java堆是一切线程同享的。是虚拟机启动的时刻建立的。寄存的是对象的实例和数组。所占内存最大。分为新生代(Young区)、老年代(Old区)。新生代又分为Eden区、Servior区。Servior区又分为From space区和To space区。Eden区和Servior区的内存比例为8:1。当扩大内存大于可用内存的时刻,会抛出OOM。
4.当地要领栈
当地要领栈是线程独享的。与Java虚拟机栈相似,但不是为Java要领(字节码)效劳,而是为当地非Java要领效劳。也会抛出StackOverFlowError和OOM。
5.要领区
要领区是一切线程同享的。用于存储已被虚拟机加载的类信息、常量、静态变量等数据,又称为非堆(Non-Heap)。要领区又称为“永远代”,GC很少在这个地区举行,但不代表不会接纳。这个地区接纳目的主如果针对常量池的接纳和对范例的卸载。当内存请求大于现实可用内存时,会抛出OOM。
java相干文章引荐:java入门
以上就是JVM中的运行时数据地区是哪些的细致内容,更多请关注ki4网别的相干文章!