【问题标题】:IBM Websphere OutOfMemoryExceptionIBM Websphere OutOfMemoryException
【发布时间】:2008-10-08 13:53:53
【问题描述】:

我经常在 IBM Websphere Application Server 上发现 OutOfMemoryException。 我认为发生此异常是因为我的应用程序从数据库中检索了大量数据。所以,我限制所有查询不要检索超过 1000 条记录的数据,并设置 WAS 的 JVM 跟随

+ Verbose garbage collection
+ Maximum Heap size = 1024 (RAM on my server is 16 GB and now I already change to 8192)
+ Debug arguments = -Djava.compiler=NONE -Xdebug -Xnoagent  
                    -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777
+ Generic JVM arguments = -Dsun.rmi.dgc.server.gcInterval=60000 
                          -Dsun.rmi.dgc.client.gcInterval=60000 -Xdisableexplicitgc  
                          -Dws.log=E:\WebApp\log -Dws.log.level=debug
(ws.log and ws.log.level are my properties)

我在配置文件文件夹中找到了 heapdumpjavacoresnap 文件,我认为它们可以告诉我问题的原因,但我没有不知道如何读取/使用 heapdump、javacore 和 snap 文件。

请告诉我如何预防/避免/修复 OutOfMemoryException。 谢谢

【问题讨论】:

    标签: java web-services jakarta-ee websphere


    【解决方案1】:

    如果您想查看堆转储文件,IBM 提供了分析它们的工具here

    【讨论】:

      【解决方案2】:

      这个问题的答案取决于与 OutOfMemoryException 关联的消息。您也可以尝试 -XX:MaxPermSize=... 并将其设置为更大的值,例如 256m。

      此外,如果您在某处有递归函数,则可能会导致堆栈溢出。

      如果可以,请发布与异常相关的消息。 Stacktrace 也可能会有所帮助。

      【讨论】:

        【解决方案3】:

        "Thanks for the memory"是一篇关于JVM使用内存的好文章,可能有助于分析这个问题...

        感谢bwalliser提供此链接

        【讨论】:

          【解决方案4】:

          尝试在本地重现问题,以便您可以使用 JProfiler 等工具对其进行调试。即使您不能在本地强制 OOM,您也可能会看到 JProfiler 中的内存增加。然后你拍摄快照并寻找没有被垃圾收集的类。这不是一门精确的科学,但它比查看 IBM 堆转储要容易得多。但是,如果必须,检查堆转储的旧方法是使用 HeapRoots。这可能取决于您使用的版本。我确实知道某些版本的 IBM JDK 在压缩方面存在问题,因此即使您有足够的内存,您也可以获得 OOM,因为没有足够大的可用片段。

          【讨论】:

            【解决方案5】:

            我假设您使用 hibernate/JPA 作为持久性提供程序?您是否使用二级缓存?如果是这样,您是否考虑过从缓存中清除大型结果集?

            【讨论】:

              【解决方案6】:

              如果我们不知道 OutOfMemoryError 是什么种类,这个问题就很难回答; permgenheapspace 是两种截然不同的野兽。

              我在 JBoss 上追逐 perm-gen 好几个月了,尽管这种特殊类型的问题对于任何动态重新加载 Web 应用程序的应用程序服务器都很普遍。这个传奇记录在here

              您拥有的那些堆转储...可能是您可以在Eclipse MAT 中分析它们。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2016-03-13
                • 2012-08-26
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多