android - 由于 20 天以上的 fragment 化导致内存不足错误 android

标签 android memory out-of-memory fragmentation

我制作了一个在咖啡机上运行的应用程序。
20 多天后(可能是 60 多天,具体取决于使用情况) 发生 OutOfMemoryError:

    java.lang.OutOfMemoryError: Failed to allocate a 604 byte allocation with 16777216 free bytes and 319MB until OOM; failed due to fragmentation (required continguous free 65536 bytes for a new buffer where largest contiguous free 53248 bytes)

我的问题是:
有没有办法以编程方式在内存 Android 应用程序上运行 fragment 整理?

所需的时间应该不是问题,因为机器会进入待机或环保模式。
我看到的是可用内存绰绰有余。

最佳答案

Is there a way to run a defragmentation on memory android application programmatically?

没有。在 Android 5.0-7.1 上,你能做的最好的事情就是离开前台,因为 ART 的垃圾收集器只会在你的应用程序在后台时压缩内存。在 Android 8.0+ 上,即使您在前台,ART 的垃圾收集器也会压缩内存。

除此之外,目标是每周或类似地启动一个新进程,这样您就可以获得一个新堆。

关于android - 由于 20 天以上的 fragment 化导致内存不足错误 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50624338/

相关文章:

c++ - C++中的变量存储在哪里?

(u/i)int_fastN_t 需要澄清

java - Finalizer 线程会导致内存不足吗?

android - Action 模式栏下推工具栏

android - 使用 Kotlin 在 fragment 中创建 AlertDialog

android - 如何在 Android Studio 中的文件中搜索方法

c - 在 C 中使用 realloc 函数进行内存分配的问题

android - 卡在 Flag_Activity_Clear_Top

android - 在 Android 中发布大文件

java - 无法写入超出特定大小的 DataOutputStream - OutOfMemoryError