是什么在java.lang.OutOfMemory的区别:GC开销超过限制与java.lang.Ou

2019-09-17 19:18发布

我调查我们的应用程序的缓慢,并最终在集群环境中下降的情况之一。 几个星期前,我碰到下面的错误:

[#|2012-05-11T14:12:03.460-0400|SEVERE|sun-appserver2.1|javax.enterprise.system.container.web|_ThreadID=89;_ThreadName=httpSSLWorkerThread-7311-0;_RequestID=7afaee11-c970-40dd-b5fb-29498af8e512;|StandardWrapperValve[LoginModule]: PWC1406: Servlet.service() for servlet LoginModule threw exception
java.lang.OutOfMemoryError: GC overhead limit exceeded

我想,既然GC开销限制被超过,它必须是与我的应用程序。 有一份报告,是关于使用POI将记录在Excel中确实密集,所以我认为这可能会导致它。 作为一种短期修复,直到下一个版本中,我们得知1个用户谁曾访问这个报告不能访问它。

然而,今天,两个星期后再次实例之一下去并在搜索日志中,我发现下面的错误:

[#|2012-06-05T10:31:36.532-0400|SEVERE|sun-appserver2.1|net.jxta.impl.endpoint.mcast.McastTransport|_ThreadID=141;_ThreadName=IP Multicast Listener for mcast://228.8.10.93:31676;_RequestID=90caf76e-b740-4f11-8ffe-8ab88a740569;|Uncaught Throwable in thread :IP Multicast Listener for mcast://228.8.10.93:31676
java.lang.OutOfMemoryError: Java heap space
|#]

请注意在差异GC overhead limit exceededJava heap space 。 我试图找出是否我今天看到的错误是一样的道理用户访问报表造成的,但是,我相信,如果是这样的话,那么我会看到GC overhead limit exceeded

我相信,今天的错误更关系到服务器的配置。

请澄清帮助。

Answer 1:

第一误差“GC开销”意味着GC正在CPU周期的大的部分,主要是它意味着98%或99%,并且在各运行它被释放非常少的存储器1-2%。

第二个错误是指您的应用程序的一些处理过程中出去的内存。

此外,您的调查是使用了太多的记忆正确的POI,POI有额外的内存消耗的历史。

跨越来到很好的讨论SO



Answer 2:

还有一个类似的话题了很好的讨论在这里 。 当大量的时间被消耗掉的GC,但很少的内存回收它基本上引起的。



文章来源: What is the difference in java.lang.OutOfMemory: GC Overhead limit exceeded vs. java.lang.OutOfMemory: Multicast listener