【发布时间】:2015-05-18 11:06:49
【问题描述】:
我正在尝试使用 Collection.sort(List) 对包含 10 亿个整数的列表进行排序,它会引发以下异常 “线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间” -xms 设置为 512m,xmx 设置为 1536m。我该如何排序?我的系统中有 8GB 内存,因此分配更多物理内存不是问题。我尝试给 -xmx 2048m 但 vm 无法使用该设置进行初始化。
【问题讨论】:
-
10 亿个整数的数组是 10 亿乘以 4 个字节,差不多 4 GB,所以即使拼写正确,Xmx2048 也不够用。
-
相关的,如果不是重复的话:stackoverflow.com/q/7203159/3419894
-
另外,您可以考虑使用自定义列表的替代方法(比 java Lists 更小的内存占用),并且您可以编写自己的排序算法(两者都有教育价值)。