当我只有2GB内存时,是否可以加载或处理10GB文件?

Man*_*oor 2 sorting file large-files

给定10GB文件的名称,任务是对文件进行排序,系统只有2GB的RAM.你会怎么做?

是否可以加载或处理带有2GB RAM的10GB文件?

Ste*_*n C 8

解决方案是将文件分成适合内存的部分,单独对部件进行排序并将其写入临时文件,然后合并临时文件.

有关更详细的说明,请参阅有关Merge Sort的Wikipedia文章.


对于记录,使用虚拟内存的解决方案将无法扩展.除非你仔细设计你的排序算法,否则你会将系统推入灾难性的虚拟内存颠簸中.

对压缩文件进行排序也不起作用.


是否可以加载带有2GB RAM的10GB文件?

解释这是一个普遍的问题,答案是否定的.如果你的问题需要(显着)更多的RAM,那么你需要采用一种算法将问题分成更小的问题.如果找不到以这种方式工作的算法,那么您将陷入困境.

是否可以处理带有2GB RAM的10GB文件?

是的...只要您的处理不要求您同时将整个10GB文件保存在内存中.