作者LPH66 (1597463007)
看板java
标题Re: [问题] JAVA创立物件与方法回传值问题
时间Sat May 10 23:26:24 2014
※ 引述《iammarsman ( )》之铭言:
: 感谢板大的回覆~~
: 想请教一下关於第一种情况,
: 小弟印象中当new了一个物件,
: JVM会在heap中配置该物件所需的记忆体,
: 如果有变数承接, 则会将该物件的记忆体位址传给该变数,
: 所以像这种没有变数承接的情况,
: 是否有可能会造成该记忆体区块无法被参考到,
: 进而导致系统效能低落呢? (GC似乎也是隔一段时间才会执行)
基本上这要看设计及用途
以推文的 new TaskThread.start() 来说
由於 (没猜错他的想法的话) 这东西是产生一个 Thread 并执行
那麽这个 Thread 物件本身会被系统 (精确地说是 JVM) 抓走 由它管理
类似的情形是这东西可能在底层会注册到一个特定的地方 (例如一个视窗 class)
这种的话即使最後回来时没有变数承接也无妨
因为它其实已经有被适当的管理机制给承接了 不需要使用者去管理它
如果不是这种情形的话 则确实它会在回来之後成为 GC 候选
不过倒不必担心效能低落 JVM 会在它觉得该做 GC 的时候去做 GC
这个机制还没有脆弱到被单单一个乱丢的物件给弄坏 XD
其实就算有接回来管理 最後用完时依然是以这种方式丢掉的
现有的 GC 机制本来就是应对这种方式设计 所以在这一点不必担心就是了
--
実琴:「
河野!你真的就这样被
物质慾望给吸引过去了吗?!」
亨:「只要
穿着女装摆出亲切的样子,所有必要花费就能
全免,似乎一点都不坏啊。」
実琴:「难道你没有
男人的尊严了吗?!」
亨:(断然道)「
没有。在
节衣缩食且
生活吃紧的
学生面前,
没有那种东西。」
--プリンセス・プリンセス 第二话
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.39.85
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1399735587.A.240.html
1F:推 PsMonkey:补:里头有东西被 reference 到,也不会被GC(应该没记错 05/10 23:35
2F:→ Deltaguita:GC 通常是在空闲的时候 或是记忆体不足的时候执行 05/10 23:48
3F:→ Deltaguita:如果太多垃圾物件造成GC不断的话 的确是会影响效能 05/10 23:50
4F:推 iammarsman:谢谢大家的回覆, 感激不尽!! 05/11 01:36