Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在开发基于服务器端 Spring 的应用程序。我们正在使用 JAXB、SOAP 和 Axiom(包装在 Spring WS 中),它们使用 Woodstox 编组/解组 xml 消息,但是我们的应用程序在垃圾处理方面存在问题。我们只发送 165 Mb 的消息,但 Marshaller 产生了大约 920 Mb 的垃圾。也许有人知道,为什么收集的垃圾这么大,我该如何改善呢?
Woodstox 本身并没有真正产生所有这些垃圾,因为它只保留了一小部分状态来支持流式访问。生成的主要对象将只是生成的字符串值,甚至是仅在访问时生成的值。
但是 Axiom 提供的最重要的数据绑定必须保持更广泛的状态并构造对象模型以公开。所以我希望它会产生很多短命的物体。它通常还访问 XML 文档的每个值,具体化所有字符串。鉴于此,我同意@SpaceTrucker 的观点,即不需要产生不合理数量的垃圾。与生活在老年代的长寿命对象相比,短期垃圾通常没有那么大的问题。
您是否尝试过进行堆转储以查看正在生成的对象类型?