gpt4 book ai didi

java - Java ArrayList 的紧凑替代品

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:03:58 30 4
gpt4 key购买 nike

<分区>

我需要存储一个大型自然语言单词词典 -- 最多 120,000 个,具体取决于语言。这些需要保存在内存中,因为分析表明使用数组的算法是系统中的时间瓶颈。 (它本质上是一种拼写检查/自动更正算法,尽管细节并不重要。)在具有 16MB 内存的 Android 设备上,与 Java 相关的内存开销 String s 导致我们空间不足。请注意,每个 String有一个38 byte overhead associated with it,这会产生高达 5MB 的开销。

乍一看,一个选项是替换 char[]对于 String . (甚至是 byte[] ,因为 UTF-8 在这种情况下更紧凑。)但是内存开销同样是一个问题:each Java array has a 32 byte overhead .

ArrayList<String> 的一种替代方法等是创建一个具有几乎相同接口(interface)的类,该类在内部将所有字符串连接成一个巨大的字符串,例如表示为单个 byte[] ,然后将偏移量存储到那个巨大的字符串中。每个偏移量将占用 4 个字节,从而提供更节省空间的解决方案。

我的问题是 a) 是否有任何其他解决方案可以以类似的低开销* 和 b) 是否有任何现成的解决方案?搜索 Guava , trovePCJ集合库不产生任何结果。

*我知道可以将开销降低到 4 个字节以下,但 yield 递减。

注意。 Support for Compressed Strings being Dropped in HotSpot JVM?建议 JVM 选项 -XX:+UseCompressedStrings在这里没有帮助。

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