优化应用内存

内存在任何软件开发环境中都是一项宝贵资源,但在移动操作系统中,物理内存通常有限,因此 RAM 更为宝贵。对于搭载 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。这样做可以生成质量相同但内存占用量更小的图片。