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

       在程序执行的时候 JVM定义了各种的运行时数据区,一些数据区域是在JVM启动的时候创建的,也在JVM销毁的时候销毁,还有一些数据区域是在线程创建的时候创建,在线程销毁的时候销毁。

    运行时数据区由6部分组成

      1 程序计数器(Program Counter Register)

      2 虚拟机栈 (VM Stack)

      3 本地方法栈 (Native Method Stack)

      4 方法区 (Method Area)

        4.1 方法区是个逻辑的概念,用来存放类的信息 例如 类信息中的常量池 字段 方法 等

        4.2 jdk<=1.7 ,方法区称为永久代  FGC不会回收 也不会触发FGC

        4.3 jdk>=1.8 ,方法区称为元空间 FGC会回收 当达到阈值的时候 也会触发FGC

        4.4 永久代和元空间的区别,两个都是对方法区的具体实现,只是实现方式不同,永久代是在JVM中单独开放一个空间用来存放数据,比如字符串常量池就是存放在这个空间中,而元空间并没有在jvm中单独开放一个空间,而是将数据存放在本地内存中,但是将字符串常量池存放在JVM的堆中。(如何证明元空间的字符串常量池是在堆中?一直创建字符串常量,观察堆,和Metaspace)

      5 运行时常量池(Run-Time Constant Pool)=>其实是方法区的一部分

      6 堆(Heap)

     从线程的访问范围区分

      线程共享 =》方法区 堆 运行时常量池

      线程私有=》程序计数器 虚拟机栈 本地方法栈

        

  • 相关阅读:
    koa mog
    sdl
    基于WindowImplBase 更简单 以及 可变大小的,才是标准的
    df
    ffplay vc
    开源1bo
    react学习前一部分
    0514 react路由
    nodejs 调用进程
    Ubuntu Linux, 不要弄什么 wine,龙井 或者什么等 QQ 了。
  • 原文地址:https://www.cnblogs.com/Tony100/p/13530786.html
Copyright © 2011-2022 走看看