KOOM
KOOM copied to clipboard
被线程池的线程所持有的Activity对象泄露了没有gcpath相关信息
直接在项目的master分支上运行,并且在koom-demo工程代码的基础上修改了一些代码,如下:
public static class LeakedActivity extends AppCompatActivity {
ExecutorService executors = Executors.newSingleThreadExecutor();
static List<Activity> uselessObjectList;
public static void setUselessObjectList(List<Activity> activities) {
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
executors.execute(() -> {
while (true) {
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.e("LeakedActivity", "onCreate");
}
});
this.finish();
}
}
只是把LeakdActivity原来由静态变量持有,改成线程池执行任务(内部类持有LeakdActivity对象)
最后生成的json文件没有关于LeakdActivity泄露的gcpath,试了红米note4x和iqoo neo5都是这样,应该所有手机都是这样
如果换成Thread的方式又可以获取LeakdActivity泄露的gcpath,这究竟是为什么呢?