关于java vm的垃圾收集

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

一、sun jvm的自动收集与编程显式调用System.gc()是有区别的,

自动回收的线程级别是最低的,假如系统越来越繁忙,压力越来越大,那么自动回收的线程运行的机会就会变小,甚至不会运行,结果是内存不能释放;

不建议使用编程调用System.gc()是因为垃圾收集时,系统会挂起,而编程调用一般是定时处理的,并且用户线程度高于5,即肯定会被运行(这个我用过,回收效果明显,做过j2me的朋友肯定会有更深的体会的),所以系统也会定时地被挂起,也就影响到了系统的响应,但并不明显。

二、综上所述,在适当的时候调用System.gc()两次是合适的,注重“两次”只是个人经验,大家可以试验。

三、另外,sun jvm只适合开发环境,即启动速读比较快,

在产品或生产环境下,我建议大家使用jrocket vm,从bea的官方网站上可以免费下载;这个vm不仅具有并行和分代垃圾收集的功能(即垃圾收集线程和用户线程具有同等的优先级,并且可以同时运行,不会挂起系统;垃圾收集具有更细的粒度级),并且可以大幅度提高系统运行性能。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航