尽管我不赞成在不赞成使用Java Vectors的情况下使用它,但我仍受制于遗留代码,在其中我无法进行修改。

尝试将Element添加到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);
                    }

最佳答案

在您的程序中,您尝试分配n个对象。
您的操作系统为JVM分配了一些可使用的空间,该空间称为heap space。当所有堆空间已满且没有更多空间可分配给新对象时,您将得到OutOfMemoryError

因此,您应该使用-Xmx增加堆空间,如下所示:

java -Xmx 1024m YourClassName


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

09-25 20:23