A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

问题如标题

7 个回复

倒序浏览
是堆内存由java虚拟机来管理(比如垃圾回收)的缘故吗?
回复 使用道具 举报
王明(1988) 发表于 2012-4-22 08:56
是堆内存由java虚拟机来管理(比如垃圾回收)的缘故吗?

对吧!在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。
堆内存用来存放由new创建的对象和数组,在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。
回复 使用道具 举报
这个楼主明显知道,不是说了为什么要通过引用来间接访问堆。
是这个原因:java避免避免直接访问堆内存中的数据可以保证程序的健壮性,如果程序直接访问(不通过引用,当然c++中是用指针)修改堆内存中数据,
可能破坏内存中的数据完整性,从而导致程序Crash。
回复 使用道具 举报
哦,这个样子啊 thanks
回复 使用道具 举报
因为堆内存的数据是实体性的,动态的,需要有明确指向,一个没有明确的引用,当然就谈不上谁在访问了。而主函数是静态的,存在状态的不同,所以要能过明确的引用进行访问。没有名字访问谁的呢?
回复 使用道具 举报
王勃 中级黑马 2012-4-22 10:15:32
7#
java语言貌似这样,但C语言堆中的内存是程序员自己申请空间,自己free的,是可以直接操作的。可以认为java不让访问底层,或者说java没C接近底层吧
回复 使用道具 举报
王勃 中级黑马 2012-4-22 10:17:06
8#
应该是为了防止内存泄露的缘故吧,利用jvm来进行回收堆的垃圾。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马