我有一个文本文件,每行都有一串整数:
47202 1457 51821 59788
49330 98706 36031 16399 1465
...
该文件有300万行数据,并且需要将其加载到内存中,提取其中的5元组,然后进行一些统计。但是我只拥有8GB RAM的内存限制。为了尽可能减少创建的对象数量,我只使用1个类,其中包含6个浮点变量和一些方法。每行数据会生成该类的若干个对象(与该行数据的单词数成比例)。我开始觉得当C++存在时,Java不适合处理这些事情。
编辑:假设每行数据会产生(n-1)个该类的对象,其中n是由空格分隔的该行数据中的标记数(即1457)。因此,考虑每行平均大小为10个单词,每行平均映射到9个对象上。因此,将会生成9*3*10^6个对象。所需内存量为:9*3*10^6 *(8字节对象头+6 x 4字节浮点数)+(一个map(String,Objects)和另一个map(Integer,ArrayList(Objects)))。我需要将所有内容都保存在内存中,因为后面会进行一些数学优化操作。