请教高手

cexo821 2008-07-03 04:02:27
求教,为什么这里定义大小为一亿的整数数组会OM,经测试,最大大概能定义15400000左右,求个详细点的解释,谢谢


public static void main(String[] args) {
Random r = new Random();
int[] str = new int[100000000];
for (int i = 0; i < num; i++) {
str[i] = (r.nextInt() >>> 1) % 100000000;
}
sortStr(str);
}

...全文
105 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sagezk 2008-07-03
  • 打赏
  • 举报
回复
Error occurred during initialization of VM
Could not reserve enough space for object heap

-Xms1024m -Xmx1024m 的结果。
craky 2008-07-03
  • 打赏
  • 举报
回复
JVM的内存不够
运行里加上参数就行了,比如
java -Xmx500M Temp
xuhaiyang 2008-07-03
  • 打赏
  • 举报
回复
内存不够用了就OM啊
你可以在启动jvm的时候设置-Xmx1024m,也就是说最大可分配内存1G,不过你要保证你机器有这么大的内存
呵呵
码道功臣 2008-07-03
  • 打赏
  • 举报
回复
好像java内存区确省值是16M
Java的每个Method的限制是64K。
不同的VM可能会有不同的缺省值,如果要设置,可以使用-Xms和-Xmx选项
cexo821 2008-07-03
  • 打赏
  • 举报
回复
OM应该是超出了可用RAM的范围,但不知道是我计算错了,还是什么原因
wangshizhu79 2008-07-03
  • 打赏
  • 举报
回复
是15465883
据说是跟操作系统支持的int类型最大值有关
ChangXiangzhong 2008-07-03
  • 打赏
  • 举报
回复
i < num;???
num和一意无关
cexo821 2008-07-03
  • 打赏
  • 举报
回复
就算是一亿个整数也才380多M,我给的JVM最大Xmx:768M,非堆栈MaxPermSize:128,不知道有什么问题,望指教
cexo821 2008-07-03
  • 打赏
  • 举报
回复
我算了下,内存够用啊
jingulang 2008-07-03
  • 打赏
  • 举报
回复
跟内存有关吧
xiezongzhou 2008-07-03
  • 打赏
  • 举报
回复
这有什么好解释的
你声明数组要内存空间吧
你内存空间不够肯定会OM呀
cexo821 2008-07-03
  • 打赏
  • 举报
回复
代码改下,查了下资料,有的说跟JDK有关,有的说跟系统,很多说法

public static void main(String[] args) {
Random r = new Random();
int[] str = new int[100000000];
for (int i = 0; i < 100000000; i++) {
str[i] = (r.nextInt() >>> 1) % 100000000;
}
// sortStr(str);
}

zidasine 2008-07-03
  • 打赏
  • 举报
回复
不是很懂 关注下 顶

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧