zoukankan      html  css  js  c++  java
  • JVM 运行时数据区域

    一、程序计数器

    可以看成当前线程执行的字节码的行号指示器。

    如果当前线程正在执行Java方法,指向的是正在执行的虚拟机字节码指令的地址。如果正在执行的是Native方法,其值为空。

    此内存区域不存在OutOfMemoryError异常。

    二、Java虚拟机栈

    当前线程特有,周期与线程一致。

    虚拟机栈是Java方法执行的内存模型,每个方法执行的同时会创建一个栈帧,用于存储局部变量表,操作数栈,动态链接,方法出口等信息。方法执行对应着栈帧从虚拟机栈入栈到出栈的过程。

    三、本地方法栈

    本地方法栈是为虚拟机使用到的本地方法(Native方法)服务的。

    以上都是线程隔离的数据区


    四、Java堆

    被所有线程共享,存放对象实例。

    五、方法区

    被所有线程共享,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码数据。又称为”非堆”。

    六、运行时常量池

    运行时常量池是方法区的一部分。

    常量池用于存放编译生成各种字面量和符合引用。在类加载后进入到运行时常量池中存放。

    七、直接内存

    虚拟机之外的内存,在NIO中,频繁使用的内存,使用DirectByteBuffer对象直接引用,减少Java对和直接内存之间的复制数据。

    以上运行时数据区域使用下图来示意:

    image

  • 相关阅读:
    如何成为一名数据科学家
    暑假反思
    暑假计划(7月23日-8月21日)
    ACM数论模板
    Nelder–Mead method
    Introduction to Data Mining
    51_1037最长循环节 (miller rabin算法 pollard rho算法 原根)
    乘法逆元(转)
    51_1228 序列求和(伯努利数)(转)
    清除input中内容的简单方法
  • 原文地址:https://www.cnblogs.com/javabeginer/p/7210302.html
Copyright © 2011-2022 走看看