Java 奇怪的内存不足异常

Java 奇怪的内存不足异常,java,jersey,out-of-memory,tomcat6,Java,Jersey,Out Of Memory,Tomcat6,我们的web应用程序出现了一种非常奇怪的情况。它使用Tomcat6,web服务是用Jersey实现的。下面的服务调用旨在返回JSON数据 出现以下异常: http://mywebservices/get/some/data/for/1 http://mywebservices/get/some/more/data/for/12345 http://mywebservices/get/some/other/data/for/abc 但是,以下方法很好: http://mywebservices/

我们的web应用程序出现了一种非常奇怪的情况。它使用Tomcat6,web服务是用Jersey实现的。下面的服务调用旨在返回JSON数据

出现以下异常:

http://mywebservices/get/some/data/for/1
http://mywebservices/get/some/more/data/for/12345
http://mywebservices/get/some/other/data/for/abc
但是,以下方法很好:

http://mywebservices/get/some/data/for/12345
http://mywebservices/get/some/more/data/for/1
这些只是虚构的电话,以显示正在发生的事情。我们有实时监控服务,可以显示约5 GB的JVM可用内存我们相信Tomcat向我们抛出的OOM是一个虚假/不正确的响应。有趣的是,即使对于完全不同的web服务,浏览器上显示的堆栈跟踪也保持不变。我们非常确定我们看到的跟踪与web服务请求完全无关。所以我们正在弄清楚我们是否真的有漏洞

同时,如果有人以前遇到过这种情况,那就太好了


谢谢。

好的,我们相信我们已经找到了这个问题的根本原因。由于使用ObjectOutputStream和ObjectInputStream,确实存在泄漏

现在ObjectOutputStream有一个reset()方法可以清除引用,但ObjectOutputStream没有类似的方法

这个链接帮助我们:

您能否提供堆栈跟踪中可能有用的任何信息?请发布堆栈跟踪。我们还希望看到在请求这些资源时执行的代码。您的VM参数是什么?@PeterLawrey即使对于完全不同的web服务请求,堆栈跟踪在浏览器上也保持不变。假的。稍后将发布堆栈跟踪。是否已附加调试器并在引发OOM异常时停止调试器?当时发生了什么?@SpaceTrucker我们在生产箱上看到了这个问题,无法在我们的暂存环境中复制它们。到目前为止,我们只是在分析堆转储。将附加一个调试器。