数组在内存中的运行机制

  深入数组

1.数组引用变量只是一个引用,这个引用 变量可以指向任何有效的内容,只有当该引用指向有效内存后,才可通过该数组变量来访问数组元素。


2.实际的数组对象被存储在堆(heap)中;如果引用该数组对象的数组引用变量是一个局部变量,那么它被存储在栈(stack)内存中。


3.为什么有栈内存和堆内存之分

答:当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会 逐个放入这个栈内存里,随着方法的执行结束,这个方法的内存栈也自然销毁。因此,所有在方法中定义的局部变量都是放在栈内存中的;在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常比较大),这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁,即使方法结束后,即使方法结束后,这个对象还可能被另一个引用变量所引用(在方法的参数传递时很常见),则这个对象依然不会被销毁。只有当一个对象没有任何引用变量引用它时,系统的垃圾回收器才会在合适的时候回收它。


b数组的长度首先出来的4   其后是3看似数组的长度的可变的,但是这个是个假象。必须牢记:定义并初始化一个数组后,在内存分配了两个空间,一个用于存放数组的引用变量,另一个用于存放数组本身。


当程序定义并初始化了a,b两个数组后,系统内存中实际上产生了4个内存区,其中栈内存中有两个引用变量:a和b堆内存中也有两块内存区,分别用于存储a和b引用所指向的数组本身


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值