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)

     从线程的访问范围区分

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

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

        

  • 相关阅读:
    【CSP2019模拟】题解
    【Codeforces 868 G】— El Toll Caves(类欧几里得)
    【Codeforces 868 G】— El Toll Caves(类欧几里得)
    如何写出规范的代码? 做一名追求极致的软件工程师!
    浏览器原理
    URL(待整合到HTTP书中哦)
    FTP服务器
    background-image 和 img
    XML的总结学习
    逻辑思维 代码逻辑
  • 原文地址:https://www.cnblogs.com/Tony100/p/13530786.html
Copyright © 2011-2022 走看看