精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-25
system.gc运行级别是最低,一般在多线程编程中,自己手动调用gc,其实一点作用不起,因为处理机根本不给于搭理,除非是空闲时,手动调用了,反而可能会增加虚拟机的负荷。
|
|
返回顶楼 | |
发表时间:2009-09-26
程序运行时,wtk自带的内存monitor中就可以看到自动回收的过程了,完全没必要手动system.gc()。
|
|
返回顶楼 | |
发表时间:2009-12-23
最后修改:2009-12-23
如果一个机器,一个对象x
这个机器只能容纳1.99999999个x对象 那么 X x = new X(); 在用完x,想重新生成一个new X(); 用x = new X();与用x = null;再用x = new X(); 就非常有区别了,前者同时存在两个对象,内存爆了。后者不会。 所以用x = null;这个=null;在程序界都有用,都应该用,用都正确,而且用了才算是入了门,才算正确! gc?用还是不用,不是你凭经验,凭wtk,凭模拟器,凭理论就确定的。 调gc无非是想催jvm回收,这必定消耗资源的,我用真机经验告诉你 Nokia s60 2nd 你催啊,你越催越慢,有时卡不动了! 而moto K1 V600等你不催啊,你不催内存就爆了!你必须常常催,不催就死了。 |
|
返回顶楼 | |
发表时间:2009-12-23
看情况吧。
有时有必要。 试过在游戏中释放资源时,没手动调用System.gc(),在下次导入资源时会内存溢出。手动调用System.gc(),不会出现内存溢出。 在内存溢出时试试手动调用System.gc()吧。也许可以解决。 |
|
返回顶楼 | |
发表时间:2009-12-25
LWUIT的主开发者推荐不要使用gc,而是使用WeakReference来代替,,不过这方面我没做过实验,有人做过使用WeakReference这方面的事吗?有数据的话就好说明了
|
|
返回顶楼 | |
发表时间:2010-03-24
鸟哥说的很到位。
gc原理大家都明白,完全是java描述的那样。 但实际编程中要不要调,什么时候调,取决于程序需求和虚拟机本身实现。 有的机器一次gc调用硬生生对应一次gc过程,完全没有所谓的消息通知。这时候调用越多机器越卡。 也有的机器自动gc性能非常差,以至于不依赖手动gc调用,内存基本得不到回收。 |
|
返回顶楼 | |