黑马程序员技术交流社区
标题:
数组操作中的堆栈内存
[打印本页]
作者:
冯亚磊
时间:
2012-6-27 01:21
标题:
数组操作中的堆栈内存
数组操作中的堆栈内存不明白,谁能给简单说一下啊?
作者:
王涛
时间:
2012-6-27 01:25
数组操作中,在栈内存中保存的永远是数组的名称,只开辟了栈内存空间的数组是永远无法使用的,必须有指向的对内存才可以使用。
要想开辟新的堆内存则必须使用new关键字,然后只是将此堆内存的使用权交给了对应的栈内存空间,
而且一个堆内存空间可以同时被多个栈内存空间指向,就像一个人可以有多个名字,人就相当于堆内存,名字就相当于栈内存。
作者:
王涛
时间:
2012-6-27 01:25
发重了,呵呵
作者:
张华廷
时间:
2012-6-27 01:33
Java 把内存划分成两种:一种是栈内存,另一种是堆内存;堆内存用来存放由 new 创建的对象和数组,在堆中分配的内存,由 Java 虚拟机的自动垃圾回收器来管理。在堆中产生了一个数组或者对象之后,还可以在栈中定义一个特殊的变量,让栈中的这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或者对象,引用变量就相当于是为数组或者对象起的一个名称。引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组和对象本身在堆中分配,即使程序运行到使用 new 产生数组或者对象的语句所在的代码块之外,数组和对象本身占据的内存不会被释放,数组和对象在没有引用变量指向它的时候,才变为垃圾,不能在被使用,但仍然占据内存空间不放,在随后的一个不确定的时间被垃圾回收器收走;在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2