使用collections.sort()对10亿个整数进行排序会导致内存不足错误

时间:2015-03-16 10:53:49

标签: java sorting

我尝试使用Collection.sort(List)对10亿个整数列表进行排序,并抛出异常 "线程中的异常" main" java.lang.OutOfMemoryError:Java堆空间"  -xms设置为512m,xmx设置为1536m。我该如何排序?我的系统中有8GB内存,因此分配更多物理内存不是问题。我尝试给-xmx 2048m,但vm无法使用该设置进行初始化。

2 个答案:

答案 0 :(得分:2)

可能区分大小写并且没有空格,请尝试使用-Xmx2048m

  

非标准选项

     

-Xmx 名词

     

指定内存分配池的最大大小(以字节为单位)。此值必须是1024的倍数,大于2 MB。附加字母k或K表示千字节,或m或M表示兆字节。默认值是在运行时根据系统配置选择的。

     

对于服务器部署,-Xms和-Xmx通常设置为相同的值。请参阅垃圾收集器人体工程学   http://docs.oracle.com/javase/7/docs/technotes/guides/vm/gc-ergonomics.html

     

示例:

     

-Xmx83886080

     

-Xmx81920k

     

-Xmx80m

请参阅docs

答案 1 :(得分:1)

  

我试过给-xmx 2048m但是vm无法使用该设置进行初始化。

您可能正在使用32位JVM which have a practical max heap size below 2GB。您应该尝试使用64位JVM。

另请注意,您应该为程序设置VM参数,而不是为Eclipse设置(因为您似乎正在按照您的一条评论进行操作)。您可以通过选择运行Run中的下拉菜单然后运行配置来执行此操作。然后选择您的程序并打开Arguments面板。