为什么不能将Tomcat的Full gc禁用掉?

大多数人都知道通过设置-XX:-+DisableExplicitGC可以禁用掉显示调用的System.gc().

而有心人可以发现Tomcat会每隔一个小时触发一次Full GC,为什么每次那么准时?是因为应用中对象正好一个小时满了么?当然不是.那么可以禁用掉好提高性能么?这个是可以的么?答案是No!千万别!

Why?

想了好多,觉得还是简单来讲吧,所有的堆外内存都只有在Full GC情况下才会释放,而Tomcat线上应用都应该是开启NIO的(大概是应该吧?毕竟NIO性能比较高是吧),而NIO也会产生堆外内存,另外线程的栈信息(使用多线程的情况下)也需要在Full GC来清除,所以因为full gc 导致应用暂停时间较长,而取消掉full gc 是不合理的 

猜你喜欢

转载自mzhou.iteye.com/blog/2304842