我有一个 Web 应用程序在我的 64 位 Windows Server 2003、Oracle 11G 数据库和 Apache Tomcat 6.0 Web 服务器上运行。
应用程序在实时环境中运行,大约 3000 名用户使用我遇到的 Java 堆内存不足错误。增加堆空间后,它就解决了。
现在我又遇到了同样的问题,下面是错误堆栈跟踪:
Exeption in thread "http-8080-10" java.lang.OutOfMemoryError: Java heap space Aug 23, 2013 8:48:00 PM com.SessionClunter getActiveSessions Exeption in thread "http-8080-11" java.lang.OutOfMemoryError: Java heap space Exeption in thread "http-8080-4" Exeption in thread "http-8080-7" java.lang.OutOfMemoryError: Java heap space
最佳答案
您的问题可能是由几件事引起的(在概念层面上):
您可能有太多并发用户或用户 session 。
您可能试图同时处理过多的用户请求。
您可能试图处理过大的请求(在某种意义上)。
您可能有内存泄漏...这可能与上述某些问题有关,也可能无关。
没有简单的解决方案。 (您已经尝试了唯一简单的解决方案......增加堆大小......但它没有奏效。)
解决此问题的第一步是更改 JVM 选项,使其在发生 OOME 时进行堆转储。然后使用内存转储分析器检查转储,找出哪些对象使用了太多内存。这应该会给你一些证据,让你缩小可能的原因......
关于java - 线程 "http-8080-10"java.lang.OutOfMemoryError : Java 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18415174/