gpt4 book ai didi

java - Jackson writeValueAsString 太慢

转载 作者:行者123 更新时间:2023-11-30 08:14:38 26 4
gpt4 key购买 nike

我想从对象创建 JSON 字符串。

ObjectMapper om = new ObjectMapper();
String str = om.writeValueAsString(obj);

有些对象很大,创建 JSON 字符串需要很长时间。创建 8MB JSON 字符串大约需要 15 秒。

我该如何改进?

最佳答案

确保有足够的内存:用于存储 8 MB 序列化 JSON 的 Java 字符串需要堆中大约 16 MB 的连续内存。

但更重要的是:为什么要在内存中创建 java.lang.String ?这么大的字符串有什么用处?

如果您需要将 JSON 内容写入文件,可以使用不同的方法;类似地写入网络套接字。至少您可以将输出写入 byte[](占用的内存减少 50%),但在大多数情况下,增量写入外部流只需要很少的内存。

15秒绝对是很慢的。如果没有 GC 问题,在初始预热后,Jackson 应该在不到一秒的时间内写入 8 兆字节,对于由标准 Java 类型组成的简单对象来说大约需要 10-20 毫秒。

编辑:

刚刚意识到,在构造结果字符串期间,临时内存使用量也会增加一倍,因为构造String时缓冲内容尚未清除。因此 8 MB 至少需要 32 MB 来构造 String。如果默认堆为 64 MB,这将无法正常工作。

关于java - Jackson writeValueAsString 太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29836666/

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