优化应用内存

在任何软件开发环境中,内存都是宝贵的资源,但在移动操作系统中,内存更加宝贵,因为物理内存通常受到限制。对于 Android (Go 版本) 中常见的原生低内存设备,尤其如此。有一些方法可以帮助优化应用中的内存,以帮助其在这些环境中平稳运行。

最佳实践

释放缓存内存

可能没有足够的内存来保持后台进程的运行,就像在典型环境中一样。在这种情况下,您可以使用 onTrimMemory() 来修剪应用进程中不需要的内存。为了最好地识别应用的当前修剪级别,请使用 ActivityManager.getMyMemoryState(RunningAppProcessInfo) 并优化或修剪任何不必要的资源。例如,您可以修剪表达式、搜索、视图缓存或可打开扩展中的不必要的内存使用情况,以减少应用因内存不足而发生崩溃或 ANR 的次数。

任务调度

并发调度可能导致多个内存密集型操作并行运行,从而导致资源竞争超过应用的峰值内存使用量。尝试通过将进程分成正确的 线程池 中的 CPU 密集型、低延迟任务来适当地分配资源,以在可能面临各种资源限制的设备上运行。

内存泄漏

Android Studio 中的 内存分析器Perfetto 等各种工具专门用于帮助查找和减少应用中的内存泄漏。强烈建议您使用这些工具来识别和修复潜在的内存问题,以允许应用的其他组件在不额外增加系统压力的情况下运行。

其他提示

  • 大型图像或可绘制对象会消耗应用中更多的内存。识别并优化大型或全彩色位图以减少内存使用量。
  • 为 Android (Go 版本) 构建应用时,尝试为应用中的 GIF 选择其他选项,因为 GIF 会消耗大量内存。
  • 您可以使用 WebP、pngcrush 和 pngquant 等工具减小 PNG 文件大小,而不会损失图像质量。所有这些工具都可以在保持感知图像质量的同时减小 PNG 文件大小。
  • aapt 工具可以在构建过程中使用无损压缩来优化放置在 res/drawable/ 中的图像资源。例如,aapt 工具可以将不需要超过 256 种颜色的真彩色 PNG 转换为具有调色板的 8 位 PNG。这样做会产生质量相同但内存占用更小的图像。