我得到"线程中的异常" main" java.lang.OutOfMemoryError:Java堆空间"在arrayList中添加值时出现异常。这只是一个例子
public class Test {
public static void main(String[] args)
{
Test t= new Test();
ArrayList<ArrayList<String>> deleteError = new ArrayList<ArrayList<String>>();
for(TableItem item : items) // loop moves 800 times
{
for(String Element_ID : checkelementID) // another loop which check element ids which moves for 800 again
{
t.deleteErrorInArrayList("1", "GEN_err", "11", deleteError);
t.deleteErrorInArrayList("1", "Greater_than", "11", deleteError);
t.deleteErrorInArrayList("1", "GEN_err", "16", deleteError);
t.deleteErrorInArrayList("1", "Greater_than", "16", deleteError);
}
}
}
public void deleteErrorInArrayList(String rowID,String message,String column,ArrayList<ArrayList<String>> mainlist)
{
ArrayList<String> list = new ArrayList<String>();
list.add(rowID);
list.add(message);
list.add(column);
mainlist.add(list);
list = null;
}
}
请帮帮我。如何优化上面的代码,这样我可以减少时间并删除异常。
答案 0 :(得分:0)
鉴于内部列表的所有元素具有相同的结构(三个字符串),您可以通过存储数组(String[]
)而不是ArrayList来做得更好。
此外:当你(显然)只需要一些代码时,你通过存储字符串来浪费空间。
我尝试用一些整数编码替换GEN_err
和Greater_than
,并存储三个整数(或短路或字节)的数组,而你应该使用更少的内存。