zoukankan      html  css  js  c++  java
  • jvm内存结构

    内存模型粗略划分为:堆和栈

    详细划分为:堆,栈,本地方法栈,方法区,程序计数器

    存放对象实例

    每创建一个线程,都会为他分配内存空间作为他的栈,当方法执行时,会生成对应的栈帧(局部变量表、操作数栈、动态链接、方法出口),每一个方法被调用直至执行完成的过程,就对应着一个栈帧在栈中从入栈到出栈的过程。局部变量表存放了编译期可知的各种基本数据类型和对象引用

    ps:动态链接指的是在一个方法中调用另一个方法时,另一个方法的名称属于符号引用,将符号引用转为直接引用称为动态链接

    本地方法栈

    虚拟机调用本地方法(native关键字修饰的)时使用的内存区域

    方法区:(方法区是jvm规范的,而在HotSpot虚拟机中,方法区被实现为元空间,他使用的是物理机的本地内存)

    常量池,类的数据结构和静态变量,方法的信息等

    程序计数器

    为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,持有一个当前正在被执行的指令的引用。各条线程之间的程序计数器互不影响,属于“线程私有”。

     字符串常量池 String pool 实现为哈希表,存的是字符串对象的引用,真正的对象还是存放在堆中

    当在方法实例化一个对象时,关联的内存有哪些

    “Object obj”这部分的语义将会反映到虚拟机栈的局部变量表中

    new Object()”这部分的语义将会反映到Java堆中,形成一块存储了Object 类型所有实例数据值,另外,在Java 堆中还必须包含能查找到此对象类型数据(如对象类型、父类、实现的接口、方法等)的地址信息,这些类型数据则存储在方法区中

     

    new Object( )  对象实例的对象头包含了到Class对象的引用,类的元信息都是通过Class对象找到的

     

  • 相关阅读:
    JS面向对象的理解
    引用类型值的相等判断
    数组的常用方法
    得到一定范围内的随机数
    数组随机排序
    【目标检测大集合】R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
    卷积层和池化层学习
    R-FCN:基于区域的全卷积网络来检测物体
    【目标检测】Faster RCNN算法详解
    Selective Search for Object Recognition
  • 原文地址:https://www.cnblogs.com/moris5013/p/10700259.html
Copyright © 2011-2022 走看看