在我的应用程序中,我使用具有多个runnables的处理程序。为了调用这些runnables,我循环postDelayed,以便它们充当计时器。我意识到随着时间的推移,这将产生一个巨大的堆(10mb并继续增加)。所以我的问题是我可以使用什么而不是postDelayed而不会生成大量的消息?
答案 0 :(得分:1)
你的runnables不太可能消耗这么多内存。处理后,每个可运行的实例都应由GC清除。如果您正在更快地创建和发布runnable,那么它们将被执行您将获得ANR,因为您的UI线程将无法分派输入事件。如果你经常创建新的runnables会导致GC更频繁地触发,但你的堆不应该增长。
您的应用中更有可能发生内存泄漏。您可以使用MAT来检查在Java堆中确切消耗大量内存的内容。