使用Java Vector.addElement(Object o)方法的java.lang.OutOfMemoryError

时间:2014-10-09 09:54:50

标签: java vector out-of-memory

虽然我知道不推荐使用Java Vectors,因为我不赞成使用遗留代码,因为我没有修改它的奢侈品。

我在尝试将addElement添加到Vector时遇到OutOfMemoryError。以下是我的代码片段。如果我能改进以下代码,请告诉我。

 /*objOut is the Vector Object.
     idx is incoming integer argument. 
     Val is some Object
   */
    int sz = objOut.size();
                    if (idx == sz) {
                        objOut.addElement(val);
                    } else if (idx > sz) {
                        for (int i = (idx-sz); i>0; i--) {
                            objOut.addElement(null); // Code through OutOfMemory in this line
                        }
                        objOut.addElement(val);
                    } else {
                        objOut.setElementAt(val, idx);
                    }

1 个答案:

答案 0 :(得分:1)

在您的计划中,您尝试分配n个对象 您的操作系统会为您的JVM分配一些空间,并且该空间称为heap space。当所有堆空间都已填满并且没有剩余空间可用于为新对象分配时,将获得OutOfMemoryError

所以你应该做的是用这样的-Xmx增加你的堆空间:

java -Xmx 1024m YourClassName  

这将为您的程序分配1024 MB(1 GB)的堆空间。您可以根据您的要求请求堆空间。