Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Woodstox需要这么多的记忆?_Java_Spring_Spring Ws_Axiom_Woodstox - Fatal编程技术网

Java 为什么Woodstox需要这么多的记忆?

Java 为什么Woodstox需要这么多的记忆?,java,spring,spring-ws,axiom,woodstox,Java,Spring,Spring Ws,Axiom,Woodstox,我正在开发基于Spring的服务器端应用程序。我们正在使用SpringWS中包装的JAXB、SOAP和Axiom,它使用Woodstox封送/解封xml消息,但我们的应用程序在垃圾处理方面存在问题。我们只发送165MB的消息,但Marshaller产生大约920MB的垃圾。也许有人知道,为什么收集到的垃圾如此之大,我如何改进它?Woodstox本身并没有真正产生所有垃圾,因为它只保留一小部分状态来支持流式访问。生成的主要对象将只是生成的字符串值,甚至是仅在访问时才生成的字符串值 但除此之外,Ax

我正在开发基于Spring的服务器端应用程序。我们正在使用SpringWS中包装的JAXB、SOAP和Axiom,它使用Woodstox封送/解封xml消息,但我们的应用程序在垃圾处理方面存在问题。我们只发送165MB的消息,但Marshaller产生大约920MB的垃圾。也许有人知道,为什么收集到的垃圾如此之大,我如何改进它?

Woodstox本身并没有真正产生所有垃圾,因为它只保留一小部分状态来支持流式访问。生成的主要对象将只是生成的字符串值,甚至是仅在访问时才生成的字符串值

但除此之外,Axiom提供的数据绑定必须保持更广泛的状态,并构建对象模型来公开。所以我希望它能产生大量的短生命物体。它还通常访问XML文档的每个值,具体化所有字符串。有鉴于此,我同意@SpaceTrucker的观点,这不是产生不合理数量垃圾的必要条件。和生活在老一代的长寿物体相比,短期垃圾的问题并不多


您是否尝试过使用堆转储来查看生成了哪些类型的对象?

如果您没有受到xml实体扩展的影响,我不会称之为太多垃圾,因为它只有输入的5.5倍大。根据特定的消息,可能会创建大量实例,这会增加开销。此外,相等的字符串可能会从xml文件的同一部分多次实例化。最好是进行堆转储,以查看谁是罪魁祸首以及它们是什么类型的对象。您还应该为问题添加更多上下文。这是在客户端还是服务器端?大消息是请求还是响应?是否使用JAXB2之类的数据绑定?等