【发布时间】:2015-01-15 15:33:48
【问题描述】:
我正在开发基于 Spring 的服务器端应用程序。我们正在使用 JAXB、SOAP 和 Axiom(包装在 Spring WS 中),它们使用 Woodstox 编组/解组 xml 消息,但是我们的应用程序在垃圾处理方面存在问题。我们只发送 165 Mb 的消息,但 Marshaller 产生了大约 920 Mb 的垃圾。也许有人知道,为什么收集的垃圾这么大,我该如何改善呢?
【问题讨论】:
-
如果你没有遭受 xml 实体扩展的困扰,我不会称它为垃圾,因为它只有输入的 5.5 倍。根据特定消息,可能会创建很多实例,这些实例具有开销。此外,相同的字符串可能会从 xml 文件的同一部分多次实例化。
-
最好的办法是做一个堆转储,看看谁是罪魁祸首以及他们是什么类型的对象。
-
您还应该为您的问题添加更多上下文。这是在客户端还是服务器端?大消息是请求还是响应?您是否使用诸如 JAXB2 之类的数据绑定?等等。
标签: java spring spring-ws axiom woodstox