Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache Axis 1.4 OutOfMemoryError:Java堆空间_Java_Exception_Heap_Axis_Out Of Memory - Fatal编程技术网

Apache Axis 1.4 OutOfMemoryError:Java堆空间

Apache Axis 1.4 OutOfMemoryError:Java堆空间,java,exception,heap,axis,out-of-memory,Java,Exception,Heap,Axis,Out Of Memory,我有一个奇怪的问题,它突然出现在使用ApacheAxis1.4向web服务发出SOAP请求的客户端上。一年来一切都很顺利。随着时间的推移,响应的大小一直在缓慢增长,最近我收到了相当随机的OutOfMemoryError:Java堆空间调用异常。轨迹的顶部显示在底部。这可能发生在所拨打电话的1/10处。如果它发生了,我捕捉到异常并再次尝试调用,它在100个案例中有99个是有效的 当我第一次看到这一点时,我自然认为我的最大堆大小需要增加。我正在运行Tomcat 6,并将以前的-Xmx1024M设置更

我有一个奇怪的问题,它突然出现在使用ApacheAxis1.4向web服务发出SOAP请求的客户端上。一年来一切都很顺利。随着时间的推移,响应的大小一直在缓慢增长,最近我收到了相当随机的
OutOfMemoryError:Java堆空间
调用异常。轨迹的顶部显示在底部。这可能发生在所拨打电话的1/10处。如果它发生了,我捕捉到异常并再次尝试调用,它在100个案例中有99个是有效的

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

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

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

我正在为soapweb服务使用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)的工具。

您好,谢谢您的输入。我使用jvisualvm来监控内存使用情况,与Axis相关的对象实例占内存消耗的很大一部分。然而,考虑到响应的大小在过去的几个月里只是小幅增长,并且可用堆的翻倍并不能解决问题,因此实际缺乏堆似乎不太可能是真正的问题。还有,如果是这样的话,我觉得很奇怪,它10次工作9次,并且在错误出现后,在重试时立即工作。更多的输入,我发现了这一点:我的情况非常相似——也就是说,这是一个反复反序列化SOAP响应的线程。@MarcusJohansson您找到解决这个问题的方法了吗?我正在开发遗留应用程序,我们仍在使用axis 1.4。