我使用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在不同操作系统上将其对象存储在哪里,如何删除孤立对象?