首页 > 解决方案 > Java:用于存储 900,000 个客户编号的集合

问题描述

对于其中一个用例,我想存储大约 900,000 个客户号码来进行洗牌。它将有 2 列 - 一个是原始客户编号,另一个是经过洗牌的客户编号。

使用 Java 的最佳方法是什么,这样我就不会遇到内存异常或 GC 开销?

谢谢。

标签: javaperformance

解决方案


如果一个数字只有 4 个字节,存储 900k 个数字并不多。如果超出堆,您还可以使用增加 Java 中的堆大小来增加堆大小

如果您的数据增长并且您需要大量空间,那么您可以使用像http://www.mapdb.org/这样的堆外数据结构。它们提供 List 或 Set 或 Map 接口的实现,但将一些数据保存到磁盘而不是堆。


推荐阅读