求教,为什么这里定义大小为一亿的整数数组会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);
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【cexo821】截止到2008-07-03 16:02:44的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    代码改下,查了下资料,有的说跟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);
    }
      

  3.   

    就算是一亿个整数也才380多M,我给的JVM最大Xmx:768M,非堆栈MaxPermSize:128,不知道有什么问题,望指教
      

  4.   

    i < num;???
    num和一意无关
      

  5.   

    是15465883
    据说是跟操作系统支持的int类型最大值有关
      

  6.   

    OM应该是超出了可用RAM的范围,但不知道是我计算错了,还是什么原因
      

  7.   

    好像java内存区确省值是16M
    Java的每个Method的限制是64K。
    不同的VM可能会有不同的缺省值,如果要设置,可以使用-Xms和-Xmx选项
      

  8.   

    内存不够用了就OM啊
    你可以在启动jvm的时候设置-Xmx1024m,也就是说最大可分配内存1G,不过你要保证你机器有这么大的内存
    呵呵
      

  9.   

    JVM的内存不够
    运行里加上参数就行了,比如
    java -Xmx500M Temp
      

  10.   

    Error occurred during initialization of VM
    Could not reserve enough space for object heap
    -Xms1024m -Xmx1024m 的结果。