我有一个数组列表:

private ArrayList<PerfStatBean> statFilterResults;

我想像这样遍历它:
Iterator<PerfStatBean> statsIterator = statFilterResults.iterator();
while(statsIterator.hasNext()){
  i++;
  PerfStatBean perfBean = statsIterator.next();
  .........

我想在while循环中运行以释放内存后,从statFilterResults中删除该bean。我相信如果我做类似的事情
 perfBean = null;

它不会执行该操作,因为perfBean引用将为null,但该对象仍将在内存中。

有任何想法吗?

谢谢,

最佳答案

这可能不是一个很好的优化。如果内存需求很大,那么您可能首先不想将它们全部存储在列表中-在创建对象时对其进行处理。

但是,从字面上看问题,ListIterator.set是适合您的方法。

for (
    ListIterator<PerfStatBean> iter = statFilterResults.listIterator();
    iter.hasNext()
) {
    ++i;
    PerfStatBean perfBean = iter.next();
    iter.set(null);
    ...
}

07-26 06:00