内存是任何软件开发环境中的宝贵资源,但在物理内存通常受到限制的移动操作系统上,它更加宝贵。对于通常随附 Android (Go 版本) 的原生低内存设备来说尤其如此。有几种方法可以帮助优化应用内存,使其在这些环境中流畅运行。
最佳实践
释放缓存内存
可能没有足够的内存来保持后台进程像在典型环境中那样运行。在这种情况下,您可以使用 onTrimMemory()
来移除应用进程中不需要的内存。为了最好地识别应用的当前修剪级别,请使用 ActivityManager.getMyMemoryState(RunningAppProcessInfo)
并优化或移除任何不需要的资源。例如,您可以移除表达式、搜索、视图缓存或可打开扩展中不必要的内存使用,以减少应用因内存不足而崩溃或出现 ANR 的次数。
任务调度
并发调度可能导致多个内存密集型操作并行运行,从而导致资源竞争,超出应用的峰值内存使用量。尝试通过将进程分离到正确的 线程池 中的 CPU 密集型、低延迟任务来适当分配资源,以便在可能面临各种资源限制的设备上运行。
内存泄漏
各种工具,例如 Android Studio 中的 Memory Profiler 和 Perfetto,可专门用于帮助查找和减少应用中的内存泄漏。强烈建议您使用这些工具来识别和修复潜在的内存问题,以便应用的其��组件在系统不受额外压力的情况下运行。
其他提示
- 大尺寸图片或可绘制对象在应用中消耗更多内存。识别并优化大尺寸或全彩位的位图以减少内存使用。
- 为 Android (Go 版本) 构建应用时,尽量为应用中的 GIF 选择其他选项,因为 GIF 会消耗大量内存。
- 您可以使用 WebP、pngcrush 和 pngquant 等工具在不损失图片质量的情况下减小 PNG 文件大小。所有这些工具都能在保留感知图片质量的同时减小 PNG 文件大小。
- aapt 工具可以在构建过程中通过无损压缩优化
res/drawable/
中的图片资源。例如,aapt 工具可以将不需要超过 256 种颜色的真彩 PNG 转换为具有调色板的 8 位 PNG。这样做可以得到质量相同但内存占用更小的图片。