0

在我的应用程序中,我使用具有多个可运行对象的处理程序。为了调用这些可运行对象,我循环 postDelayed 以便它们充当计时器。我意识到随着时间的推移,这会产生一个巨大的堆(10mb 并继续增加)。所以我的问题是我可以使用什么来代替不会生成大量消息的 postDelayed?

4

1 回答 1

1

您的可运行文件不太可能消耗这么多内存。每个可运行实例在处理完后都应该被 GC 清除。如果您更快地创建和发布可运行对象,那么它们会被执行,您将获得 ANR,因为您的 UI 线程将无法调度输入事件。如果您经常创建新的可运行文件,则会导致 GC 更频繁地触发,但您的堆不应该增长。

您的应用程序中更有可能存在内存泄漏。您可以使用 MAT 检查 Java 堆中究竟是什么消耗了大量内存。

于 2012-07-20T16:02:57.887 回答