java中的内存分配

125 阅读1分钟

java中的内存分配

栈 (存储的是局部变量)

先进后出

1、存储的是局部变量
2、局部变量就是定义在方法中的变量
3、使用完毕,立即回收

堆 (存储的是new出来的东西)

new出来的通常叫=实体、对象
1、每个对象都有地址值
2、每一个对象的数据都有一个默认值
    byte、short、int、long   是0
    float、double 是0.0
    char 是‘\u0000’
    boolean 是false
    引用类型  是null
3、使用完毕后,会在垃圾回收器空闲的时候被回收

方法区 ()

本地方法区 (和系统相关)

寄存器 (给cpu使用)

java的内存需要划分成为5个部分

  1. 栈(stack):存放的都是方法中的局部变量,方法的运行一定要在栈当中。

    局部变量:方法的参数,或者是方法{}内部的变量

    作用域:一旦超出作用域,立刻从栈内存当中消失

  2. 堆(heap):凡是new出来的东西,都在堆中

    堆内存里面的东西都有一个地址值:16进制

    堆内存里面的数据,都有默认值,规则

    ​ 如果是整数 默认为0

    ​ 如果是浮点数 默认为0.0

    ​ 如果是字符 默认为'\u0000'

    ​ 如果是布尔 默认为false

    ​ 如果是引用类型 默认为null

  3. 方法区(method area):存储.class相关信息,包含方法的信息。

  4. 本地方法栈(native method stack):与操作系统相关

  5. 寄存器(pc register):与cpu相关