我尝试使用Collection.sort(List)对10亿个整数列表进行排序,并抛出异常 "线程中的异常" main" java.lang.OutOfMemoryError:Java堆空间" -xms设置为512m,xmx设置为1536m。我该如何排序?我的系统中有8GB内存,因此分配更多物理内存不是问题。我尝试给-xmx 2048m,但vm无法使用该设置进行初始化。
答案 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设置(因为您似乎正在按照您的一条评论进行操作)。您可以通过选择运行中的下拉菜单然后运行配置来执行此操作。然后选择您的程序并打开Arguments面板。