尽管我不赞成在不赞成使用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)的堆空间。您可以根据需要请求堆空间。