只有new 才分配内存,所谓的垃圾收集(garbage collection)也就是指收回这些内存,条件是这内存没有被任何其它程序代码所利用了。这道题,答案正确。 o 先被分配了内存,是一个Float大小的内存块; oa 被分配了内存,是一个Object大小的内存块(就是oa[0]).第5行,可以把oa[0]当作指针,指向 o 代表的那个Float。现在有两个代码指向那个Float内存, o 和 oa[0]. 第6行, o 不再指向Float 内存了。 第7行 oa[0]也不指向那个Float内存了,所以第7行后(理论上) 垃圾收集就起作用了。另外,上面代码有问题,编译肯定不通过,因为函数m()应该有返回值。
o 先被分配了内存,是一个Float大小的内存块; oa 被分配了内存,是一个Object大小的内存块(就是oa[0]).第5行,可以把oa[0]当作指针,指向 o 代表的那个Float。现在有两个代码指向那个Float内存, o 和 oa[0].
第6行, o 不再指向Float 内存了。
第7行 oa[0]也不指向那个Float内存了,所以第7行后(理论上) 垃圾收集就起作用了。另外,上面代码有问题,编译肯定不通过,因为函数m()应该有返回值。
你这题什么地方看到的?跟我考scjp的那道gc题很象的嘛。