zoukankan      html  css  js  c++  java
  • JVM运行时数据区与JVM堆内存模型小结

    前提

    JVM运行时数据区和JVM内存模型是两回事,JVM内存模型指的是JVM堆内存模型。


    那JVM运行时数据区又是什么?

    它包括:程序计数器、虚拟机栈、本地方法栈、方法区、堆。


    来看看它们都是干嘛的

    程序计数器:保存当前线程执行的指令的地址(大意如此)。

    虚拟机栈:由栈帧组成,而每个栈帧又包括局部变量表操作数栈动态连接(调用其他方法)、出口(被调用时返回值) -- 每个栈帧就代表了一个方法的执行。

    本地方法栈:类似虚拟机栈,只不过方法改成了native方法。

    方法区:保存了类的各种信息、类的常量、类的静态变量 -- 请注意,不包括类的普通变量!

    :各种对象所在。


    前三者都是线程内的资源,所以不会存在同步问题!

    其实按照咕泡学院海天老师的说法是,程序计数器、虚拟机栈、本地方法栈 这三个对应了冯诺依曼结构中的运算器、控制器;而方法区、堆则对应了冯诺依曼结构中的IO和存储器。耳目一新!


    再来看看JVM堆内存模型

    我们常说的新生代、老年代、永久代(JDK1.8之后变成了MetaSpace),就是JVM堆内存模型!






    最后,很多书上(包括教科书)都把堆(heap)叫做堆栈,而把栈(stack)叫做栈,个人觉得这是一种很扯淡的叫法。


    待续。

  • 相关阅读:
    convert data to numeric element wise , python,pandas
    return sql ret
    kettle学习
    kettle异常
    c# + python
    mysql表是否存在
    python configparser
    pandas sql execute
    apply map applymap
    sql 2008 中不能创建数据库关系图
  • 原文地址:https://www.cnblogs.com/larryzeal/p/7425282.html
Copyright © 2011-2022 走看看