• Java内存划分


    栈(Stack) :存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。
    局部变量:方法的参数,或者是方法{}内部的变量
    作用域: 一旦超出作用域,立刻从栈内存当中消失。

    • 栈区: 对象实例在Heap 中分配好以后,需要在Stack中保存一个4字节的Heap内存地址,
      用来定位该对象实例在Heap 中的位置,便于找到该对象实例。
    1. 存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
    2. jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身.
    3. 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。
    

    堆(Heap) :凡是new出来的东西,都在堆当中。

    • 堆区:专门用来保存对象的实例(new 创建的对象和数组),实际上也只是保存对象实例的属性值,属性的类型和对象
      本身的类型标记等,并不保存对象的方法(方法是指令,保存在Stack中)
    1. 存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
    2. jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身.
    3. 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。
    
    • 堆内存里面的东西都有一个地址值: 16进制
    • 堆内存里面的数据,都有默认值。规则:
    • 如果是整数 默认为0
    • 如果是浮点数 默认为0.0
    • 如果是字符 默认为"u0000'
    • 如果是布尔 默认为false
    • 如果是引用类型 默认为null

    静态区/方法区

    方法区(Method Area) :存储.class相关信息,包含方法的信息。

    1. 方法区又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
    2. 方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
    3. 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。
    

    本地方法栈

    本地方法栈(Native Method Stack) :与操作系统相关。

    寄存器

    寄存器(pc Register) :与CPU相关。

  • 相关阅读:
    利用模板实现c++智能指针
    movit 相关函数(二)
    moveit相关函数解释
    ros常用函数(1)
    Qtcreator中cin函数无法在application output中进行输入的问题的解决
    c++速成,适合有c基础的朋友(3)
    【重要通知】本博客不再更新,更多教程请访问 makermaker.cc
    BBC micro:bit 学习资源汇总(最近更新2019年1月6日....)
    [20个项目学会BBC micro:bit编程] 20-无线通信
    [20个项目学会BBC micro:bit编程] 19-直流电机控制
  • 原文地址:https://www.cnblogs.com/ITHSZ/p/13345661.html
Copyright © 2020-2023  润新知