java运行时数据区域

java运行时数据区域也就是jvm的内存结构!!!!

先想一个问题:java运行时数据区域是一个什么东西?

  在运行时,将内存区域分为几个不同的区域:

      虚拟机栈、本地方法栈、程序计数器、 (线程私有)

        程序计数器:用于存储线程所执行的指令的位置

        虚拟机栈: 方法执行的时候,会创建栈帧,当创建的栈帧的深度大于虚拟机允许的深度,会出现StackOverflowError,栈溢出异常

          (有点像 java内存模型中的,工作内存)

        本地方法栈:虚拟机栈与本地方法栈基本一样,不同的是它是调用的本地方法。

(这三个线程私有的部分,都是为了在线程切换回来的时候能够还原线程切换时的工作现场,继续向下执行)

      堆、方法区  (线程共享)

        堆:用来存放对象 (有点像java内存模型中的 主内存)

        方法区:存放类信息、类的静态变量、常量

  

        直接内存:不是虚拟机运行时数据区的一部分!!!!

  在介绍堆的时候要详细,年轻代、老年代  回收算法   各内存的比例  以及怎么调整比例都说出来!!!!!

posted @ 2020-07-17 11:42  你眼里的星辰  阅读(68)  评论(0)    收藏  举报