Недостаточно памяти Android из-за фрагментации через 20 + дней - PullRequest
0 голосов
/ 31 мая 2018

Я сделал приложение, которое работает на кофемашине.
Через 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 программным способом?

Время, которое требуется, не должно быть проблемой, потому что машина переходит в режим ожидания или эко-режим.
И я вижу, что естьдоступно более чем достаточно памяти.

1 Ответ

0 голосов
/ 31 мая 2018

Есть ли способ запустить дефрагментацию в памяти приложения для Android программным способом?

Нет.На Android 5.0-7.1 лучшее, что вы можете сделать, это выйти на передний план, поскольку сборщик мусора ART будет сжимать память только тогда, когда ваше приложение находится в фоновом режиме.На Android 8.0+ сборщик мусора ART сократит объем памяти, даже когда вы находитесь на переднем плане.

Помимо этого, старайтесь запускать новый процесс раз в неделю или что-то в этом роде, чтобы вы получали новую кучу.

...