java - 使用什么代替 postDelayed 来节省内存

标签 java android memory memory-management memory-leaks

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

最佳答案

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

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

关于java - 使用什么代替 postDelayed 来节省内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11582571/

相关文章:

java - OpenCV Android Studio Java IP摄像机未连接

java - 我可以使用普通的 JDK 框架强制集合中各个元素的不变性吗?

android - 联系人总数 - android

memory - 没有辅助存储的虚拟内存

linux - Docker 容器上的 ImageMagick 生成格式错误的 PNG 图像

java - Jersey:将 header 添加到服务器响应

java - Android 用户界面编码错误

android - 如何在 Android 中更改 .wav 文件的音调?

PHP数组操作时内存使用突然增加

java - 代码签名 J2ME 应用程序