给定一个 10GB 的满是名字的文件,任务是对文件进行排序处理,而系统只有 2GB 的 RAM。你会怎么做?
是否可以使用 2GB RAM 加载或处理 10GB 文件?
最佳答案
解决方案是将文件分成适合内存的部分,将这些部分单独排序并写入临时文件,然后合并临时文件。
有关更详细的描述,请参阅关于 Merge Sort 的维基百科文章.
郑重声明,使用虚拟内存的解决方案不会扩展。除非您非常仔细地设计您的排序算法,否则您会将系统推向灾难性的虚拟内存抖动。
对压缩文件进行排序也不起作用。
Is it possible to load a 10GB file with 2GB RAM ?
将其解释为一般性问题,答案是否定的。如果您遇到的问题需要(明显)比您拥有的更多 RAM,那么您需要采用一种算法将问题分成更小的问题。如果您找不到以这种方式工作的算法,您将陷入困境。
Is it possible to process a 10GB file with 2GB RAM ?
是的...前提是您的处理不需要同时将整个 10GB 文件保存在内存中。
关于file - 当我只有 2GB RAM 时是否可以加载或处理 10GB 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29340780/