Допустим, у меня есть поток, определенный следующим образом:Может ли установка Looper в потоке вызывать утечку памяти в Java?
public class MyThread extends Thread {
Looper someLooper;
public void setLooper(Looper looper){
someLooper= looper;
}
@Override
public void run() {
System.out.println("MyThread - START "+Thread.currentThread().getName());
System.out.println("mylooper:"+someLooper.toString());
}
}
}
Теперь, скажем, на экране mainThread деятельности я это сделать:
MyThread t = new MyThread();
t.setLooper(Looper.getMainLooper());
t.start();
Будет ли это утечка памяти, так как петлитель навсегда ссылается на дочерний поток? Будет ли GC иметь возможность собирать память из mainThread-активности или она должна ждать, пока петлеузер не будет освобожден? Я думаю, что это не будет утечкой памяти, поскольку петлитель связан с потоком, а не с контекстом активности. Мне нужно подтверждение.
Является ли объект подходящим для сбора мусора, является функцией того, кто содержит ссылку на этот объект, а не на какие объекты, на которые ссылается объект, ссылается на объект. Таким образом, значение члена 'someLooper'' MyThread' не влияет на то, соответствует ли этот поток GC. –