有谁知道是否有办法在 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 时更聪明,例如当它们进入后台时。

10-08 18:20