Как выпустить ашмем

Выделение и использование пепла хорошо работает:

ashmemFD = open("/dev/ashmem", O_RDWR);
int ret = ioctl(ashmemFD, ASHMEM_SET_NAME, "vf");
ioctl(ashmemFD, ASHMEM_SET_SIZE, size);
ashmap = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, ashmemFD, 0);

Но вопрос в том, достаточно ли просто разархивировать его после использования или мне нужно сделать больше, чтобы освободить память снова?

munmap((void*) ashmap,size);

1 ответ

Решение

Вам нужно закрыть все файловые дескрипторы в области ashmem после ее отмены.

Регионы Ashmem можно рассматривать как файлы на основе памяти, обрабатываемые ядром. Пока существует дескриптор открытого файла для одного из них, он будет храниться в памяти.

Надеюсь это поможет.

Другие вопросы по тегам