Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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中使用可变对象将XML数据写入OutputStream_Java_Network Programming_Xml Serialization_Jaxb_Xstream - Fatal编程技术网

在java中使用可变对象将XML数据写入OutputStream

在java中使用可变对象将XML数据写入OutputStream,java,network-programming,xml-serialization,jaxb,xstream,Java,Network Programming,Xml Serialization,Jaxb,Xstream,在不生成/创建太多不可变对象的情况下,将XML写入OutputStream(TCP套接字)的最佳方法是什么 所以我的数据在ConcurrentHashMap中。我想循环这个数据,创建一个自定义XML,然后将XML写入一个OutputStream。这个过程是重复的,所以我不想在转换/写入过程中生成太多的对象,这样GC就不会有太多的负载 我一直在研究JAXB和XStream,以使映射到XML的转换更容易,但似乎有了JAXB中的XMLAdapter和XStream中的Convertor方法,我将在转换

在不生成/创建太多不可变对象的情况下,将XML写入OutputStream(TCP套接字)的最佳方法是什么

所以我的数据在ConcurrentHashMap中。我想循环这个数据,创建一个自定义XML,然后将XML写入一个OutputStream。这个过程是重复的,所以我不想在转换/写入过程中生成太多的对象,这样GC就不会有太多的负载

我一直在研究JAXB和XStream,以使映射到XML的转换更容易,但似乎有了JAXB中的XMLAdapter和XStream中的Convertor方法,我将在转换过程中创建对象

我也愿意自己滚。我想要一个最终重用可变对象的解决方案

我可以使用StringBuffer并使用append方法连接所有内容(XML标记和我的数据),然后执行mystringBuffer.toString().getBytes()并将bytearray写入outputstream。在这种方法中,我可以重用StringBuffer和ByteBuffer。每次只有bytearray是一个新对象

还有别的办法吗

似乎我超越了自己,认为内存/GC可能有问题——我可能完全错了,仅仅使用JAXB或XStream就可以解决问题。然后我可以做一些性能测试来找出瓶颈


谢谢

同意斯卡夫曼的评论:


我认为你没有给垃圾收集者足够的信任,这是错误的 非常擅长处理大量短期对象。 不要担心对象创建开销,直到您可以看到实际的 性能有问题。这个问题听起来像个经典案例 过早优化的后果

所以,是的,我还会做一些性能测试,看看是否有瓶颈需要关注


(发布此答案主要是为了让这个问题得到更多的关注/竞争性答案,或者至少是为了从不断增长的未回答问题列表中删除此问题。)

为什么它们是不变的?你是在一个线程或什么的里面吗?我认为你没有给垃圾收集器足够的信任-它非常擅长处理大量的短期对象。在看到性能的实际问题之前,不要担心对象创建开销。这个问题听起来像是一个典型的过早优化案例。@skaffman-你应该将你的评论转化为答案。