Проверка использования памяти в haskell

Я создаю программу, которая реализует какой-то кеш. Мне нужно использовать как можно больше памяти, и для этого мне нужно сделать две вещи:

  • Проверьте, сколько памяти по-прежнему доступно в системе (только ОЗУ, а не SWAP)
  • Проверьте, сколько памяти мое приложение уже использует.

Мне нужно независимое от платформы решение (Linux, Windows и т.д.).

Используя эти две части информации, я уменьшу размер кеша или увеличу его. Как я могу получить эту информацию в Haskell? Существуют ли какие-либо пакеты, которые могут предоставить эту информацию?

Ответы

Ответ 1

Я не могу сразу увидеть, как сделать это переносимо.

Однако у GHC есть "слабые указатели". (См. System.Mem.Weak.) Если вы создаете элементы и вешаете их с помощью слабых указателей (только), тогда сборщик мусора автоматически начнет удалять элементы, если вы выполняете работу с низкой физической памятью.

(К сожалению, это не дает вам возможности решить, какие элементы нужно удалить сначала, например, те, которые являются самыми дешевыми для воссоздания, или те, которые были наименее используемыми или что-то в этом роде.)