JBoss中的内存泄漏

2 java jboss soap

我在JBoss中有一种非常奇怪的行为,我想利用SO群众的集体智慧.

我们正在使用JBoss(我认为是4.0.4)来提供SOAP调用.事实上,它已被用作美化的RPC服务器,不再需要.当我们有20多个客户同时发送请求时,我们的内存不足.请求包括传入的相当小的请求(适当的SOAP),并且基本上是一个长SOAP字符串返回结果包的(和该字符串的内容是XML).是的,我意识到这不是最理想的.不要问.

我跟踪保持4个亿个对象(字符串和整数)泄漏到org.jboss.axis.message.SAX2EventRecorder的一个实例.现在,即使是最长的响应也不会携带4MB的数据.请求都小于40K.网络上有些东西可疑,但我在网上找不到任何文档.

有人能告诉我录音机的用途吗?我怎么摆脱它呢?或者可能将其配置为内存不足?任何帮助表示赞赏.


更新:澄清 - 我做内存转储和转储显示一个数组或对象4,000,000+,字符串和整数.该阵列由org.jboss.axis.message.SAX2EventRecorder这反过来由这些人负责运营:

org.jboss.axis.message.SOAPEnvelopeAxisImpl@0x19c31fd8(141 bytes):field recorder org.jboss.axis.message.RPCParamElementImpl@0x19c32260(123 bytes):field recorder org.jboss.axis.message.SOAPBodyAxisImpl@0x19c32160(121 bytes) ):field recorder org.jboss.axis.message.RPCElement@0x19c321e0(124 bytes):field recorder org.jboss.axis.encoding.DeserializationContextImpl@0x19c332f0(67 bytes):field recorder org.jboss.axis.message.SAX2EventRecorder $ objArrayVector @ 0x19c33398(24字节):字段为$ 0

我们自己的应用程序的数据结构是臃肿膨胀,但不是这个程度.

另一个更新:已经找到"权力即解决方案"的权力:我们正在切换到64位内存.欢呼.

Kev*_*vin 11

使用JVM运行arg -XX:-HeapDumpOnOutOfMemoryError.当内存不足时,这将为您提供堆转储.然后,您可以使用jhat工具(它随JDK一起提供)分析堆转储.或者,您可以使用jconsole工具(也随JDK一起提供)使用内存管理MBean随时请求堆转储.

它将告诉您实际包含的400万个对象,这可能会让您深入了解软件未释放内存的原因.

编辑:

看来你不是唯一有这个问题的人.向Axis提交了2个错误报告

AXIS-2698

AXIS-2749

另请参阅AXIS-1771,它提供了一些有关反序列化以及调解其影响的方法的有趣信息.您使用的是哪个版本的Axis?