有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是从4GB文件创建trie(JSON)的最快方法,只需1GB的ram?

也许我做得不对:

我有一个4GB(3300万行文本)文件,其中每行都有一个字符串

我正在尝试创建一个trie->;该算法有效。 问题是这个节点。js的进程内存限制为1.4GB,所以当我处理550万行时,它就崩溃了

为了解决这个问题,我尝试了以下方法:

我创建了许多尝试,每个尝试都有一个字母表范围,而不是一个Trie。 例如: 阿特里--->;所有以a开头的单词 bTrie--->;所有以b开头的单词。。。 等等

但问题是,在读取文件时,我仍然无法将所有对象保留在内存中,因此每次读取一行时,我都会从磁盘加载/卸载一个trie。当发生更改时,我删除旧文件,并将更新后的trie从内存写入磁盘

这太慢了!甚至在我的带SSD的macbook pro上

我已经考虑用java编写这个,但是然后把java对象转换成JSON的问题出现了(使用C++等的问题)。p>

有什么建议吗


共 (2) 个答案

  1. # 1 楼答案

    您可以使用哈希函数创建任意数量的子尝试,而不是使用26次尝试。这样,您必须从磁盘读取的数据量就受限于您确定的子Trie的大小。此外,如果IO仍然存在问题,您可以将最近使用的子尝试缓存在内存中,然后在后台异步将更改持久化到磁盘