java - Apache Axis 1.4 内存不足错误 : Java heap space

标签 java exception out-of-memory heap-memory axis

我遇到了一个奇怪的问题,该问题突然出现在使用 Apache Axis 1.4 向 Web 服务发出 SOAP 请求的客户端上。一年来一切都很顺利。随着时间的推移,响应的大小一直在缓慢增长,最近我在调用时收到相当随机的 OutOfMemoryError: Java heap space 异常。跟踪的顶部部分显示在底部。这种情况可能发生在 1/10 的调用中。如果发生这种情况并且我捕获了异常并再次尝试调用,那么在 100 种情况下 99 种情况下它会起作用。

当我第一次看到这一点时,我自然地认为需要增加我的最大堆大小。我正在运行 Tomcat 6,并将之前的 -Xmx1024M 设置更改为 -Xmx2048M(计算机上有足够的 RAM)。然而,这并没有改变任何事情。查看 Tomcat 的状态,堆似乎有足够的空间来容纳 SOAP 响应。该问题似乎也与可用的 PermGen 空间无关。

该错误与应用程序运行的时间无关,它可能在 Tomcat 启动时立即发生。因此它似乎与服务器上的总体负载无关。

有人对此有什么想法吗?我是否正在处理 Axis 中的已知错误?我发现一些情况下,人们在通过 SOAP 发送巨大附件时遇到 OutOfMemoryError 异常,但是,这不是我正在做的事情。

我正在为 SOAP Web 服务使用wrapped/literal。

Exception in thread "Thread-6" java.lang.OutOfMemoryError: Java heap space
        at org.apache.axis.message.SAX2EventRecorder$objArrayVector.add(SAX2EventRecorder.java:254)
        at org.apache.axis.message.SAX2EventRecorder.newElement(SAX2EventRecorder.java:136)
        at org.apache.axis.encoding.DeserializationContext.pushNewElement(DeserializationContext.java:769)
        at org.apache.axis.message.SOAPHandler.startElement(SOAPHandler.java:94)
        at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:504)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2732)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:625)

最佳答案

从表面上看,我认为问题不在于 Axis。您是否尝试过进行内存分析?使用内存分析器工具 (MAT) 等工具。

关于java - Apache Axis 1.4 内存不足错误 : Java heap space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5580555/

相关文章:

r - 在 R Studio 中,我遇到 Java 内存不足(对于 RWeka)

haskell - 计算大文件中的字符时内存不足

java - Eclipse 仅从测试文件夹加载 log4.properties

java - 如何检查 GrantedAuthority 集合中是否存在权限?

exception - Draw.io Uncaught TypeError : dialog. showSaveDialogSync 不是函数

c# - 方法中的参数检查

java - 如果我将 max -Xmx2048m 内存分配给具有 2GB RAM 的 64 位 Linux 机器的 Java 进程,会发生什么情况?

java - 如何从静态类中引用主方法中的变量? (java)

java - SuperDevMode 优于常规 GWT Dev 模式

c++ - 当错误存在时,为什么我的程序不执行第二个 catch block ?