Я использую пакет bigmemory для параллельного доступа к большим матричным объектам. , например так
a <- bigmemory::big.matrix(nrow = 200, ncol = 100, shared = TRUE) # shared = TRUE is the default
Однако работа с результирующими объектами иногда приводит к сбою R. Это означает, что память, используемая матричными объектами, не освобождается. руководство по bigmemory предупреждает о таком случае, но не предлагает решения :
Внезапно закрытый R (например, с помощью диспетчера задач) не будет иметь шанса завершить работу с объектами big.matrix, что приведет к утечке памяти, так как big.matrix останутся в памяти (возможно, под запутанными именами) с непростым путем переподключить 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 хранит свои объекты в разных операционных системах и как удалить потерянные объекты?