У меня очень странное поведение в JBoss, и я бы хотел воспользоваться Коллективной Мудростью ТАКОЙ Толпы.
Мы используем JBoss (я думаю, 4.0.4) для обслуживания вызовов SOAP. На самом деле, он используется как прославленный RPC-сервер, не более того. У нас заканчивается память, когда более 20 клиентов отправляют свои запросы одновременно. Запросы состоят из входящего довольно небольшого запроса (собственно SOAP) и возвращаемого результирующего пакета, который, по сути, представляет собой одну длинную строку SOAP (а содержимое строки - XML). Да, я понимаю, что это неоптимально. Не спрашивай.
Я проследил утечку до экземпляра org.jboss.axis.message.SAX2EventRecorder, который содержит 4 миллиона объектов (строки и целые числа). Теперь даже самый длинный ответ не несет 4 МБ данных. Все запросы меньше 40К. Там что-то подозрительно, но я не могу найти никакой документации в Интернете.
Может кто-нибудь сказать мне, для чего используется рекордер? И как мне от этого избавиться? Или может быть настроить его, чтобы быть менее требовательным к памяти? Любая помощь приветствуется.
Обновление: чтобы уточнить - я сделал дамп памяти, и дамп показывает массив или более 4 000 000 объектов, строк и целых чисел. Массив принадлежит org.jboss.axis.message.SAX2EventRecorder, который, в свою очередь, принадлежит этим парням:
org.jboss.axis.message.SOAPEnvelopeAxisImpl@0x19c31fd8 (141 байт): полевой регистратор
org.jboss.axis.message.RPCParamElementImpl@0x19c32260 (123 байта): полевой регистратор
org.jboss.axis.message.SOAPBodyAxisImpl@0x19c32160 (121 байт): полевой регистратор
org.jboss.axis.message.RPCElement@0x19c321e0 (124 байта): полевой регистратор
org.jboss.axis.encoding.DeserializationContextImpl@0x19c332f0 (67 байт): полевой регистратор
org.jboss.axis.message.SAX2EventRecorder$objArrayVector@0x19c33398 (24 байта): введите это поле $ 0
Структуры данных нашего собственного приложения раздуты, но не до такой степени.
Еще одно обновление: полномочия, которые были найдены как «решения, которые могут быть использованы»: мы переключаемся на 64-битную память. Ура.