美文网首页
JVM内存划分

JVM内存划分

作者: 阿拉要洗澡 | 来源:发表于2017-08-26 15:11 被阅读0次

运行时数据区:

1.程序计数器( Program Counter Register)

当前线程所执行的字节码的行号指示器。线程私有

此内存区域是唯一一个在Java 虚拟机规范中没有规定任何 OutOfMemoryError 情况的区域。

2..Java 虚拟机栈(JavaVirtual Machine Stacks)

线程私有的,它的生命周期与线程相同。每个方法被执行的时候都会同时创建一个栈帧( Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。方法执行的过程对应栈帧从入栈到出栈的过程。

如果线程请求的栈深度大于虚拟机所允许的深度,将抛出 StackOverflowError 异常,如果虚拟机栈扩展时无法申请到足够的内存时会抛出 OutOfMemoryError 异常。

3.本地方法栈( Native Method Stacks)

与虚拟机栈所发挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的 Native方法服务。有的虚拟机(譬如 Sun HotSpot 虚拟机)直接就把本地方法栈和虚拟机栈合二为一。

4.Java 堆

Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建,存放对象实例。Java 堆是垃圾收集器管理的主要区域。Java堆又会划分新时代,老年代,如果从内存分配的角度看,线程共享的 Java 堆中可能划分出多个线程私有的分配缓冲区。堆内存中可分为两个大区域,一块是Young Generation(新生代),另一块是Old Generation(老生代Old区)。

5.方法区( Method Area)

与 Java 堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。运行时常量池( Runtime Constant Pool)比如字符串池、是方法区的一部分

相关文章

  • JAVA 一维数组

    数组 JVM内存划分 A:内存划分 JVM对自己的内存划分为5个区域 * a: 寄存器:内存和CUP之间 * b:...

  • 【本人秃顶程序员】关于JVM内存的N个问题

    ←←←←←←←←←←←← 快!点关注 JVM的内存区域是怎么划分的? JVM的内存划分中,有部分区域是线程私有的,...

  • JVM内存区域与内存溢出

    Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内...

  • jvm内存划分

    在整个程序执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runti...

  • jvm内存划分

    jvm内存共分为虚拟机栈,堆 ,方法区,程序计数器,本地方法区五个部分。 程序计数器(线程私有): 是当前线程所执...

  • JVM内存划分

    运行时数据区: 1.程序计数器( Program Counter Register) 当前线程所执行的字节码的行号...

  • JVM内存划分

    不同版本JVM内存划分的变化 1.6,使用永久代(PermGen)来实现方法区,运行时常量池在方法区中。1.7,还...

  • JVM内存划分

  • JVM内存划分

    JVM内存划分 一、内存区域的划分 1.1 程序计数器 每个线程都有自己的程序计数器,主要用来存储其正在执行的方法...

  • JVM GC 那些事(二)- 堆上的内存分配机制

    前一篇文章JVM GC 那些事(一)- JVM 运行时内存划分介绍了 JVM 运行时的内存划分情况。本文将介绍 J...

网友评论

      本文标题:JVM内存划分

      本文链接:https://www.haomeiwen.com/subject/hpomdxtx.html