快速Java垃圾回收问题

时间:2011-08-06 18:49:47

标签: java collections reference garbage

我正在Android中编写一个警报应用程序,我有以下内容:

ArrayList<PendingIntent> pendingIntents = new ArrayList<PendingIntent>();

public PendingIntent setAlarm(long time) {
    ...other code.
    PendingIntent pi = PendingIntent.getBroadcast(context, num, intent, flags);
    return pi;
}

我想知道如果多次执行此操作,是否每次都会覆盖原始的Pending Intent参考?

pendingIntents.add(num, setAlarm(1000));

2 个答案:

答案 0 :(得分:2)

NO

基本上,您暂时将对象引用分配给变量pi。变量被覆盖,但对象不是。它会安全地添加到您的列表中以供将来使用。

答案 1 :(得分:2)

不,不是。

每次调用add时,都会在指定的索引之后插入一个元素。

也许您打算使用set。那个替换num位置的项目,旧值有资格获得GC。