Flutter 新手求助,关于 OOM 的疑问(flutter)

发布于 1周前 作者 vueper 来自 Flutter

如题,我是一个 flutter 新手,对于 android 原生开发了解很少。目前是在网上找一些开源的 flutter 代码边调试边学习。但是我发现在我调试的好几个项目中,都会报 oom 错误,但似乎并不影响开发环境的运行。 报错类似如下:

E/AndroidRuntime(32129): FATAL EXCEPTION: pool-3-thread-188
E/AndroidRuntime(32129): Process: com.miui.dmregservice, PID: 32129
E/AndroidRuntime(32129): java.lang.OutOfMemoryError: Failed to allocate a 75497480 byte allocation with 25165824 free bytes and 71MB until OOM, target footprint 218331896, growth limit 268435456

在网上搜索后(主要是 stackoverflow ),回答要么是修改 android 代码中内存方面的配置,要么是优化代码的写法(这部分有点难懂,作为初学者看起来很吃力)。既然不影响正常运行,我感觉好像问题不大?不知道路过的 flutter 开发者如何看这个问题呢?(希望大家不要觉得我的问题很白痴,我纯纯新手:)


Flutter 新手求助,关于 OOM 的疑问(flutter)

更多关于Flutter 新手求助,关于 OOM 的疑问(flutter)的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

4 回复

看日志像是 com.miui.dmregservice 这个 app 报的 oom ,不是你的项目

更多关于Flutter 新手求助,关于 OOM 的疑问(flutter)的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


确实,仔细一看应该是我这个小米手机的问题?那更不知道怎么解决了 o.o

换个手机看看

针对你提出的Flutter OOM(Out Of Memory,内存溢出)问题,以下是一些专业的解答和建议:

  1. 原因分析

    • 加载大量高分辨率图片或图片资源未被有效管理。
    • 内存泄漏,如全局变量和单例对象存储图片资源未及时释放。
    • 图片加载库不够高效或未适当配置。
  2. 解决方案

    • 调整图片分辨率和压缩质量:使用Image.networkImage.asset时,指定合适的分辨率和质量。
    • 使用缓存机制:利用Flutter的缓存机制或高效的图片加载库(如cached_network_imageflutter_image_compress)来缓存加载的图片。
    • 选择适当的图片格式:使用内存占用较小的图片格式,如WebP。
    • 及时释放资源:在不需要使用图片资源时,及时释放内存,避免内存泄漏。
  3. 内存管理建议

    • 深入了解Dart的内存管理机制,特别是垃圾回收机制。
    • 使用Flutter DevTools的内存分析器来监控应用的内存使用情况。
    • 在多人协同开发的大型项目中,建立内存管理规范和检测机制,及时发现和修复内存泄漏问题。

希望以上解答和建议能帮助你解决Flutter OOM问题。如果还有其他疑问或需要进一步的帮助,请随时提问。

回到顶部