美文网首页
java 虚拟机运行时数据区

java 虚拟机运行时数据区

作者: 饱饱想要灵感 | 来源:发表于2022-07-05 20:57 被阅读0次
    java虚拟机运行时数据区.jpeg
    区域 线程隔离 作用
    方法区 所有线程共享 用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。当方法区无法满足内存分配需求时,将抛出OutOfMemoryError异常
    运行时常量池(方法区的一部分) 所有线程共享 用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中。不止编译期, 运行时也可将常量放入池中, 例如Stringintern()方法
    Java堆 所有线程共享 存放对象实例的区域。几乎所有对象实例以及数组都应当在堆上分配。通过参数-Xmx-Xms设置, GC的主要区域, 若堆中没有内存完成实例分配且堆无法再扩展时,将会抛出OutOfMemoryError异常。
    虚拟机栈 线程私有,其生命周期和线程同步,随着线程的启动而创建,随线程的结束而销毁。 每个方法被执行时, java虚拟机都会同步创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每个方法的被调用直至执行完毕的过程,都对应着一个栈帧在虚拟机栈中入栈到出栈的过程。若线程请求的栈深度大于虚拟机所允许的深度,抛出StackOverflowError异常;若虚拟机可以动态扩展,而扩展时无法申请到足够的内存,就抛出OutOfMemoryError异常
    本地方法栈 线程私有 虚拟机使用本地(Native)方法时的使用区域, 同虚拟机栈
    程序计数器 线程私有 它是程序控制流的指示器, 分支、循环、跳转、异常处理、线程恢复等基本功能都依赖这几计数器来完成, 没有任何OutOfMemoryError

    相关文章

      网友评论

          本文标题:java 虚拟机运行时数据区

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