作者LPH66 (ha(ruhi|yate)ism)
看板java
标题Re: [问题] 请教一道GC题目
时间Tue Mar 13 13:42:31 2007
※ 引述《H45 (!H45)》之铭言:
: ※ 引述《LPH66 (ha(ruhi|yate)ism)》之铭言:
: : 看来我需要搞懂一件事
: : x到底是个reference还是它是个物件?
: : 如果x是个reference(我目前的观念) 那就会有我的问题
: : 但如果x是个物件 那原来的答案就没问题
: : (因为此时o=obj;变成物件copy 这个o和那个o就无关了)
: : 在C++里面的话 x是个物件
: : 但这里是java 而我刚刚测试的结果是像这样宣告的成员是个reference
: 抱歉,我写得太简略了
: 原题目的class内有个member field是o
: 但是class内又有个member method内又宣告了另一个o
: 我设member field o参照的物件是x
: member method内的o参照的物件是y
: 而你所新增的member method是不会去access到另一个member method内所宣告的local
: variable, 所以它会印出x
: 我是这个意思
嗯, 我那是故意写的
因为就是要看当时那个member variable到底是什麽
所以才再新增一个member method
现在的问题是这个member variable所参照的东西
由上一篇trace的
第七行完之後那个member variable o是指向第五行的物件的
因此此时第五行那个物件还是有人reference的 因此不能被GC
我写那篇的意思就是 如果真是在第七行後就能被GC了
在第八行之前去存取那个指向已经被GC的东西到底会发生什麽事
不过jvm应该是不会把还被参照的东西GC掉 (也就是上面那件事不该发生)
所以我才说应该是在第八行执行完後
那个member variable已经不再指向第五行的物件时 那个物件才能被GC
--
◢ ˊ_▂▃▄▂_ˋ. ◣ ▅▅ ▅▅ ι●╮ █
▄▄▄▄▄
▍
./◤_▂▃▄▂_◥ \'▊ HARUHI █████ <■┘ ▄▄▄▄▄▄▄
▎
⊿ ◤◤◥█◥◥█Δ ISM By-gamejye ¢|\ ▌▌▌▌▌▄▌▌
▏
ζ(▏●‵◥′●▊)Ψ ▏ █
⊿Δ ▄▄▄ ▄▄▄▄
█/|▊ 〃 、 〃▋ |\ ▎ ハルヒ主义 █
▄▄▄█▄▄
◥◥|◣ ‵′ ◢/'◢◢
S.O.S 世界を大いに盛り上げるための凉宫ハルヒの団
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 192.192.197.115