gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:47:48 25 4
gpt4 key购买 nike

将 XML 写入 OutputStream(TCP 套接字)而不生成/创建太多不可变对象(immutable对象)的最佳方法是什么?

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

我一直在研究 JAXB 和 XStream,以使 Map 到 XML 的转换更容易,但似乎使用 JAXB 中的 XMLAdapter 和 XStream 中的 Converter 方法,我最终会得到在转换过程中创建的对象。

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

我可以使用 StringBuffer 并使用附加方法连接所有内容(XML 标签和我的数据),然后执行 mystringBuffer.toString().getBytes() 并将字节数组写入输出流。在这种方法中,我可以重用 StringBuffer 和 ByteBuffer。只有 bytearray 每次都会是一个新对象。

还有其他方法吗?

看来我有点超前了,假设内存/GC 可能有问题 - 我可能完全错误,仅仅使用 JAXB 或 XStream 可能是解决方案。然后我可以做一些性能测试来找出瓶颈。

谢谢

最佳答案

同意斯卡夫曼的评论:

I don't think you're giving the garbage collector enough credit - it's extremely good at handling a large number of short-lived objects. Don't worry about object creation overhead until you can see an actual problem with the performance. This question sounds like a classic case of premature optimisation.

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

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

关于java - 使用java中的可变对象将XML数据写入OutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6783485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com