iihero@ChinaUnix, ehero.[iihero] 数据库技术的痴迷爱好者. 您可以通过iihero AT qq.com联系到我 以下是我的三本图书: Sybase ASE in Action, Oracle Spatial及OCI高级编程, Java2网络协议内幕
分类: 云计算
2013-07-17 13:52:20
近几天在比较系统时发现一个奇怪的现象,就是ClassLoader会hold住它所Load的大部分class,导致系统更新时,内存上涨,并且一直不降。
看了看sun的jdk文档(官网上),指明ClassLoader并不负责Class的unload,Class的unload依然取决于它的引用计数是否为0。
当一个AppClassLoader由于应用更新时,需要重新生成一个AppClassLoader时,原AppClassLoader加载的Class很可能不会释放,那是因为原AppClassLoader或者它所load起来的class可能被系统ClassLoader load起来的某些Class所引用。
如果碰到这种问题,只能通过一些profiler工具逐步检测了。