Я использую пакет bigmemory для параллельного доступа к большим матричным объектам, например, вот так
a <- bigmemory::big.matrix(nrow = 200, ncol = 100, shared = TRUE) # shared = TRUE is the default
Однако работа с результирующими объектами иногда приводит к сбою R.Это означает, что память, используемая объектами матрицы, не освобождается.Руководство bigmemory предупреждает о таком случае, но не дает решения:
У внезапно закрытого R (с помощью, например, диспетчера задач) не будет возможности завершить объекты big.matrix,что приведет к утечке памяти, так как big.matrices останется в памяти (возможно, под скрытыми именами) без простого способа восстановить R к ним
После нескольких сбоев и перезапусков моегоR процесс, я получаю следующую ошибку:
No space left on device
Error in CreateSharedMatrix(as.double(nrow),
as.double(ncol), as.character(colnames), :
The shared matrix could not be created
Очевидно, моя память заблокирована осиротевшими большими матрицами.Я попробовал команду ipcs
, которая объявляется для вывода списка блоков совместно используемой памяти, но размеры перечисленных там сегментов слишком малы по сравнению с моими матричными объектами.Это также означает, что ipcrm
здесь бесполезен для удаления моих потерянных объектов.
Где bigmemory хранит свои объекты в разных операционных системах и как мне удалить потерянные объекты