基础语法-数组的内存分配

          基础语法-数组的内存分配

                           作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

一.JAVA的内存结构

  Java程序在运行时,需要在内存中分配空间。为了提高运算效率,有对空间进行了不同区域的花费,因为每一片区域都有特定数据处理方式和内存管理方式。

  栈内存:
    用于存储局部变量,当数据使用完,所占空间会自动释放。

  堆内存:
    存储数组和对象,凡是通过new建立的实例都存放在堆内存中;
    每一个实例都有内存地址值。实例中的变量都有默认初始化值;
    实例不再被使用时,会在不确定的时间内被垃圾回收器回收。

  方法区:

  本地方法区:

  寄存器:

二.编写案例代码并查看运行结果

/**
 *     数组定义
 * 
 *     @author 尹正杰
 *
 */
public class ArrayDemo2 {
    public static void main(String[] args) {
        //创建数组
        int[] arr  = new int[3];
        //将arr2保存的是arr对应的引用地址
        int[] arr2 = arr;
        //给数组中的0索引存储数据
        arr[1] = 100;
        //查询数据中指定编号中存储的数据
        for (int index = 0; index < arr.length; index++) {
            System.out.println("arr的索引" + index + "对应的值为" + arr[index]);
        }
        //arr变量存储的是数组在堆内存中的引用地址
        System.out.println(arr);
        //将变量的引用地址指向为null
        arr = null;
        System.out.println(arr);
        
        System.out.println("=====我是分割线======");
        
        for (int index = 0; index < arr2.length; index++) {
            System.out.println("arr2的索引" + index + "对应的值为" + arr2[index]);
        }
        System.out.println(arr2);
    }
}

三.分析第二步中数组的内存分配

原文地址:https://www.cnblogs.com/yinzhengjie2020/p/12219338.html