在我的程序中,我正在从磁盘读取一系列文本文件。对于每个文本文件,我都会处理一些数据并将结果以 JSON 格式存储在磁盘上。在此设计中,每个文件都有自己的 JSON 文件。除此之外,我还将一些数据存储在一个单独的 JSON 文件中,该文件存储来自多个文件的相关数据。我的问题是,随着每个文件的解析,共享的 JSON 变得越来越大,最终使用了太多的内存。我在一台 32 位机器上,有 4 GB 的 RAM,不能再增加 Java VM 的内存大小。
另一个需要考虑的限制是我经常引用旧的 JSON。例如,假设我从 FileY 中取出 ObjX。在伪代码中,会发生以下情况(使用 Jackson 进行 JSON 序列化/反序列化):
// In the main method.
FileYJSON = parse(FileY);
ObjX = FileYJSON.get(some_key);
sharedJSON.add(ObjX);
// In sharedJSON object
List objList;
function add(obj)
if (!objList.contains(obj))
objList.add(obj);
我唯一能想到的就是使用流式 JSON,但问题是我经常需要访问之前出现的 JSON,所以我不知道流式是否可以工作。我的数据类型不仅限于字符串,这使我无法使用杰克逊的流媒体功能(我相信)。有谁知道一个好的解决方案?