虽然我知道不推荐使用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);
}
答案 0 :(得分:1)
在您的计划中,您尝试分配n
个对象
您的操作系统会为您的JVM分配一些空间,并且该空间称为heap space
。当所有堆空间都已填满并且没有剩余空间可用于为新对象分配时,将获得OutOfMemoryError
。
所以你应该做的是用这样的-Xmx
增加你的堆空间:
java -Xmx 1024m YourClassName
这将为您的程序分配1024 MB(1 GB)的堆空间。您可以根据您的要求请求堆空间。