有谁知道是否有办法在 GC 运行时识别(在代码中,而不是 LogCat)?也许一个 Intent 被解雇了?我可以分析 LogCat 输出,但如果我可以从我的代码中确定 GC 何时运行,那将是理想的。
最佳答案
您可以使用弱引用技巧来做到这一点:
WeakReference<GcWatcher> mGcWatcher
= new WeakReference<GcWatcher>(new GcWatcher());
long mLastGcTime;
class GcWatcher {
@Override
protected void finalize() throws Throwable {
handleGc();
mLastGcTime = SystemClock.uptimeMillis();
mGcWatcher = new WeakReference<GcWatcher>(new GcWatcher());
}
}
现在......应用程序这样做是否真的正确,是另一回事。 :) 我所知道的唯一一个我们在 Android 中做过这个的地方就是这里的代码,它的唯一目的是帮助我们在我们要求进程显式 GC 时更聪明,例如当它们进入后台时。