Apache Axis 1.4 OutOfMemoryError: пространство кучи Java - PullRequest
3 голосов
/ 07 апреля 2011

У меня есть специфическая проблема, которая внезапно появилась на стороне клиента, которая использует Apache Axis 1.4 для выполнения запросов SOAP к веб-службе. Все прошло гладко в течение года. Размер ответов медленно рос со временем, и в последнее время я получаю довольно случайные OutOfMemoryError: Java heap space исключения по вызову. Верхняя часть трассы показана внизу. Это происходит, возможно, в 1/10 звонков. Если это происходит, и я ловлю исключение и просто повторяю вызов, это работает в 99 случаях из 100.

Когда я впервые увидел это, я, естественно, предположил, что мой максимальный размер кучи нужно было увеличить. Я использую Tomcat 6 и изменил мои предыдущие настройки -Xmx1024M на -Xmx2048M (на машине достаточно оперативной памяти). Однако это ничего не изменило. Если посмотреть на состояние Tomcat, в куче, похоже, достаточно места для ответа SOAP. Похоже, проблема не связана с доступным пространством PermGen.

Ошибка не связана со временем работы приложения, это может произойти сразу после запуска Tomcat. Следовательно, он не связан с общей нагрузкой на сервер.

У кого-нибудь есть идеи по этому поводу? Имею ли я дело с известной ошибкой в ​​Axis? Я обнаружил несколько случаев, когда люди получали исключение OutOfMemoryError при отправке огромных вложений через SOAP, однако это не то, чем я занимаюсь.

Я использую упакованный / литерал для веб-службы SOAP.

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)

1 Ответ

0 голосов
/ 07 апреля 2011

Судя по всему, проблема не в Axis.Вы пытались выполнить анализ памяти?С помощью такого инструмента, как Memory Analyzer Tool (MAT).

...