【问题标题】:Exception in thread "http-8080-10" java.lang.OutOfMemoryError: Java线程“http-8080-10”中的异常 java.lang.OutOfMemoryError: Java
【发布时间】:2013-08-27 05:36:35
【问题描述】:

我有一个在我的 64 位 Windows Server 2003、Oracle 11G 数据库和 Apache Tomcat 6.0 Web 服务器上运行的 Web 应用程序。

应用程序在实时环境中,大约有 3000 名用户使用该应用程序我遇到了 Java 堆内存不足错误。增加堆空间后,它就解决了。

现在我又遇到了同样的问题,下面是错误堆栈跟踪:

线程“http-8080-10”中的异常 java.lang.OutOfMemoryError: Java 堆空间 2013 年 8 月 23 日 8:48:00 PM com.SessionClunter 线程“http-8080-11”中的 getActiveSessions Exeption java.lang.OutOfMemoryError:线程中的 Java 堆空间异常 线程“http-8080-7”中的“http-8080-4”异常 java.lang.OutOfMemoryError: Java 堆空间

【问题讨论】:

    标签: java multithreading tomcat heap-memory


    【解决方案1】:

    您的问题可能是由几件事引起的(在概念层面上):

    • 您可能有太多同时的用户或用户会话。

    • 您可能试图同时处理过多的用户请求。

    • 您可能正在尝试处理过大的请求(在某种意义上)。

    • 您可能有内存泄漏...这可能与上述某些问题有关,也可能无关。

    没有简单的解决方案。 (您尝试了唯一简单的解决方案……增加堆大小……但没有奏效。)

    解决此问题的第一步是更改 JVM 选项,使其在发生 OOME 时进行堆转储。然后使用内存转储分析器检查转储,并找出哪些对象使用了过多的内存。这应该会给你一些证据,让你缩小可能的原因......

    【讨论】:

    • 非常感谢斯蒂芬会检查并返回
    【解决方案2】:

    如果无论您增加多少最大堆,您都不断收到OutOfMemoryError,那么您的应用程序可能存在内存泄漏,您必须通过进入代码并优化它来解决这个问题。除此之外,您别无选择,只能不断增加最大堆,直到可以为止。

    您可以使用以下完全免费的工具查找内存泄漏和优化:

    1. 在应用程序使用大量内存时创建一个堆转储,但在它崩溃之前,使用 jmap 这是你的JVM 容器使用的Java 安装的一部分(在你的情况下= tomcat ):

      # if your process id is 1234
      jmap -dump:format=b,file=/var/tmp/dump.hprof 1234
      
    2. 使用Eclipse Memory Analyzer (MAT)打开堆转储

    3. MAT 提供有关潜在内存泄漏的建议。尝试遵循这些。

    4. 查看直方图标签。它显示了转储时内存中的所有对象,按它们的类分组。您可以按内存使用和对象数量进行排序。当您发生内存泄漏时,通常会出现令人震惊的太多某些对象的实例,这些对象显然并不完全有意义。我经常仅根据这些信息来追踪内存泄漏。

    另一个有用的免费JVM 监控工具是VisualVM。一个非免费但非常强大的工具是JProfiler

    【讨论】:

    • 谢谢 janos 我只是想看看如何使用 MAT,如果你有任何链接请分享
    • 只是在线文档:help.eclipse.org/kepler/index.jsp?topic=/… 但您可能不需要太深入。查看直方图并按内存或计数对对象进行排序。通常,罪魁祸首从那里很明显。如果不是那么明显,那么也许它毕竟不是内存泄漏......
    • 很好的 janos 我已经进行了堆转储,但是我可以找到转储文件的路径是什么
    • 如果你使用了我上面给出的jmap命令,那么路径就是你file=指定的路径。如果您使用其他东西,那取决于您使用的是什么。
    猜你喜欢
    • 2011-01-23
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2016-11-24
    • 2014-12-23
    相关资源
    最近更新 更多