考虑具有以下结构的巨大JSON:
{"text": "very HUGE text here.."}
Run Code Online (Sandbox Code Playgroud)
我将此JSON存储为ObjectNode名为say 的对象json。
现在,我尝试从中提取文本ObjectNode。
String text = json.get("text").asText()
Run Code Online (Sandbox Code Playgroud)
该JSON大小约为4-5 MB。当我运行这段代码时,我没有得到结果(程序永远执行下去)。
上面的方法适用于小型和普通大小的字符串。是否还有其他最佳实践可从JSON提取大量数据?
也许你的默认堆大小太小:如果输入是 5 兆 UTF-8 编码,JavaString通常需要 10 兆内存(char是 16 位,大多数英文字符的 UTF-8 是单字节)。如果值必须作为 Java 处理,那么无论 JSON 库如何,您对此无能为力String;您需要足够的内存来处理值和其余部分。此外,由于Java堆被分为不同的代,64兆可能会也可能不会:因为10兆需要是连续的,所以它可能会被分配在老年代。
所以:请尝试使用更大的堆大小,看看您需要多少。
| 归档时间: |
|
| 查看次数: |
431 次 |
| 最近记录: |