作者PsMonkey (痞子军团团长)
看板java
标题Re: [问题] 物件销毁
时间Fri Nov 9 18:57:42 2012
※ 引述《lkjh0877 (123)》之铭言:
: 我是用degugger观察list里面的内容的
: 而且我上网找arraylist的source code里面的clear method是长这样:
: modCount++;
: // Let gc do its work
: for (int i = 0; i < size; i++)
: elementData[i] = null;
: size = 0;
: 因此我当初认为西瓜是会直接被销毁的
: 显然我必须要再去看一下add的方法
: 那假如我今天要将已放进西瓜篮的西瓜销毁
: 可以透过从西瓜篮里拿出来的?还是只能从原本的a1、a2?
这里问题有点多,虽然都是小问题,不过混在一起就变大问题了
首先就是,这一切跟西瓜篮有什麽关系?
//要执行也不是不行的 sudo code
西瓜 甲 = 西瓜田.收割();
西瓜 乙 = 西瓜田.收割();
西瓜篮[1] = 甲;
西瓜篮[2] = 乙;
西瓜篮[1] = 空的;
西瓜篮[2] = 空的;
你会说西瓜就这样被销毁了吗?
拜托,西瓜又还没被吃掉 or 坏掉
只不过西瓜篮空掉而已......
好,接下来是「什麽叫销毁」
(糟糕,突然想接「接上他的腿」 Orz)
基本上,用拟人化的讲法
所有的变数(西瓜),都要有个 reference(名字 or 篮子里头的位址)
西瓜 甲 = 西瓜田.收割();
甲 = 空的;
那刚刚收割起来的那个西瓜就没有名字了
因为没啥鸟用、或着说你没办法明白指出是那个实体(instance)
所以会被回收掉(GC)
西瓜 甲 = 西瓜田.收割();
西瓜篮[1] = 甲;
//在这个摸们特,其实「甲」跟「西瓜篮[1]」都同时代表某个西瓜实体
甲 = 空的;
//在这里还无所谓,因为可以用「西瓜篮[1]」来代表那颗西瓜
西瓜篮[1] = 空的;
//这时候就没任何方法可以代表那个西瓜实体了,所以在 JVM 中会被销毁
====
接上他的腿!
--
钱锺书:
说出来的话
http://www.psmonkey.org
比不上不说出来的话
Java 版 cookcomic 版
只影射着说不出来的话
and more......
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.202.140
1F:→ gn00742754:什麽叫惊喜? 11/09 19:38
2F:推 asadman1523:接上她的腿是甚麽梗xDD 11/12 11:36