zoukankan      html  css  js  c++  java
  • JVM Runtime Data Area 运行时数据区

    JVM Runtime Data Area 运行时数据区

    上图,这个可以算是JVM的灵魂,Java运行时数据区。

    Java运行时数据区包含:程序计数器 Program Counter Register,方法区 Method Area,堆 Heap,虚拟机栈 VM Stack,本地方法栈 Native Method Stack

    堆Heap:

    属于虚拟机中所管理的内存最大的一块,是被所有线程共享的一块内存区域。这个区域的唯一目的就是存放对象实例。可以认为所有的对象实例都是在堆的内存空间进行内存的分配。

    既然是给对象实例分配内存,那么GC就会管理这个区域。GC本身包含了很多种类,各种新生代,老年代,永久代,Eden,Survivor。

    堆可以实现成固定大小,也可以是可扩展的。HotSpot可以通过 -Xmx -Xms设定。

    栈 Stack

    虚拟机栈 VM Stack:

    属于线程私有,描述的是Java方法执行的线程内存模型:和线程有关,每个方法被执行的时候,JVM都会同步创建一个栈帧Stack Frame,存储局部变量表,操作数栈,动态连接,方法出口等。每一个方法被调用直至执行完毕的过程,就对应一个栈帧在虚拟机中从入栈到出栈的过程。

    本地方法栈 Native Method Stacks

    执行的是VM使用的本地方法服务。HotSpot直接将本地方法栈和虚拟机栈合并。

    方法区 Method Area

    属于线程共享区域,存储已经被虚拟机加载的类型信息,常量,静态变量,JIT编译后的代码缓存等。

    JDK8之前,HotSpot设计者使用永久代实现了方法区,在JDK8以后,就放弃了永久代,把JDK7中永久代中的类型信息全部移到元空间中。

    程序计数器Program Counter Register

    占较小的内存空间,看成是当前线程所执行的字节码的行号指示器,是唯一个没有规定任何OutOfMemoryError的区域

     

  • 相关阅读:
    金融大数据行业应用及发展全洞察
    金融大数据行业应用及发展全洞察
    R语言-组间差异的非参数检验
    R语言-组间差异的非参数检验
    互联网,将从内部颠覆企业管理模式
    GitHub使用教程
    sublime text3编辑器经常使用快捷方式
    webpy学习笔记之中的一个
    浏览器的重绘和重排的影响
    《Java并发编程实战》第九章 图形用户界面应用程序界面 读书笔记
  • 原文地址:https://www.cnblogs.com/dreamtaker/p/13293347.html
Copyright © 2011-2022 走看看