Glassfish 4.1 java.lang.OutOfMemoryError异常

时间:2016-01-23 12:11:18

标签: java glassfish glassfish-4

我的应用程序已在glassfish服务器上运行了很长一段时间,今天一位应用程序用户警告我服务器意外关闭。在服务器日志中,我看到以下堆栈跟踪(在服务器关闭之前10个相同的堆栈跟踪):

RadioButtonList1.SelectIndex = -1

我试图找出导致此异常的原因但我找不到任何有用的解释 - 没有一个答案描述了这种异常(GRIZZLY0013:使用java.lang.OutOfMemoryError执行FilterChain期间的异常)。可以请任何人向我解释为什么会发生这种情况,我该怎么做才能防止它再次发生?

谢谢。

2 个答案:

答案 0 :(得分:1)

服务器耗尽内存,然后JVM可能崩溃了。写入HTTP响应时发生错误。

设置JVM选项-XX:+ HeapDumpOnOutOfMemoryError,这样如果它再次发生,您可以获得一个HeapDump,您可以使用Eclipse Memory Analyzer Toolkit之类的东西进行分析,这样您就可以找到使用所有堆的内容。

答案 1 :(得分:0)

java.lang.OutOfMemoryError通常指向内存泄漏。它可能是由您的应用程序以及Glassfish引起的,因为它们都在同一个JVM中运行。该异常仅表明JVM无法分配新对象,但不会告诉内存是什么。

从堆栈跟踪中,我猜想Glassfish会在将响应发送到浏览器之前尝试处理响应。在发送HTTP协议之前,我可能发现resposne太大而无法在内存中压缩。尝试查看其他日志以重建请求正在执行的操作以及是否可以生成巨大响应。但这只是猜测,因为可能存在与正在处理的请求完全无关的内存消耗的其他原因。

您还可以通过设置JVM选项-Xmx来增加Glassfish的内存限制。