Java虚拟机如何分配管理内存?数组动态初始化的默认值?

本文深入讲解Java中数组的内存分配机制,包括不同内存区域的作用、数组动态初始化的默认值及如何通过new操作符在堆内存中创建数组。

Java数组内存分配


内存是计算机中的重要原件,临时存储区域,作用是运行程序。

我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。必须放进内存中才能运行,运行完毕后会清空内存。

Java虚拟机要运行程序,就必须要对内存进行空间的分配和管理。

将内存分为:

  • 方法区:存储可以运行的class文件。(编译后的文件)

  • 方法:方法运行时需要使用的内存,比如main方法会进入方法栈中,开辟空间开始运行。

  • 内存:存储对象或者数组的数值,new来创建的,都存储在堆内存。

public class ArrayRun {
    public static void main(String[] args) {
        int[] arr = new int[3];

        System.out.println(arr);
        System.out.println(arr[0]);

        arr[0] = 11;

        System.out.println(arr[0]);

    }
}

以上代码运行过程:

  1. 代码编译形成字节码文件ArrayRun.class,加载入内存的方法区。
  2. 字节码文件开始运行,由jvm自动调用main方法进栈,在方法栈中开辟存储空间开始运行main中代码。
  3. 首先是arr变量的声明,因为变量是在方法中声明的,所以变量存储在主方法中,也归属于栈。
  4. 开始执行new,(new出来的内容都会进入堆内存,堆内存的数据都会有地址值)在堆中开辟空间将空间的地址赋值给arr,同时为数组默认初始化值。
  5. 打印arr的地址值。
  6. 通过arr的地址值和索引就可以依次修改、打印数组当中的值了。

数组动态初始化的默认值:

  • 整型数组默认值为:0
  • 浮点型数组默认值为:0.0
  • 布尔型数组默认值为:false
  • 字符型数组默认值为:空字符
  • 引用数据类型(String)数组默认值为:null

引用数据类型:记录地址值得变量,所对应的数据类型(String、数组等)

 

如有错误欢迎留言评论,及时更正。  羽露风 5月11日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羽露风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值