我一直在学习一些与记忆相关的基本概念。
比方说,如果我有超过3 GB的数据要排序,那么是否可以在32位系统或32位JVM上对其进行排序。
这个堆必须完全驻留在RAM中,或者也可以驻留在硬盘中?
在32位系统中,您可以对超过3GB的数据进行排序。
诀窍是选择一种排序算法,它不需要同时分配内存中的整个数组。实现这一点的一种方法是使用Bucket Sort、External Merge Sort或不需要一次将整个数据集加载到内存中的分治排序算法。
一般来说,分治算法的工作原理是将原始数据(假设您有40GB的数据)拆分成更小的段(例如,每个段1GB),对每个段单独排序,然后合并这些段,直到数据完全排序。
查看这篇文章的链接到类似的排序算法。