从RAM中删除加载的drake缓存对象
我计划在drake的缓存中创建一大组对象。现在,在计划之外,我在这些对象的子集上运行了从RAM中删除加载的drake缓存对象,r,drake-r-package,R,Drake R Package,我计划在drake的缓存中创建一大组对象。现在,在计划之外,我在这些对象的子集上运行了lappy,这样我就可以总结它们的一些属性并计划接下来的步骤 我正在使用readd在我正在应用的函数中加载这些缓存对象中的每一个,但是在我处理完它们之后,它们似乎仍然会耗尽RAM。在我的场景中,这是一个问题,因为当它完成时已经有100Gib的RAM了。如果需要显式删除它们,我不确定应该在环境中的何处查找它们 我知道drake在用缓存做类似于记忆的事情,因为如果我两次读取同一个对象,第一次需要时间从磁盘读取,第二
lappy
,这样我就可以总结它们的一些属性并计划接下来的步骤
我正在使用readd
在我正在应用的函数中加载这些缓存对象中的每一个,但是在我处理完它们之后,它们似乎仍然会耗尽RAM。在我的场景中,这是一个问题,因为当它完成时已经有100Gib的RAM了。如果需要显式删除它们,我不确定应该在环境中的何处查找它们
我知道drake在用缓存做类似于记忆的事情,因为如果我两次读取同一个对象,第一次需要时间从磁盘读取,第二次是瞬间读取。但在这种情况下,我希望将缓存视为与任何其他文件一样的简单数据源,以便对象在
rm()
'd或超出范围时不会占用RAM 找到了!由get\u cache
或new\u cache
返回的storr
对象似乎具有flush\u cache
方法。调用它,然后gc()
,返回内存
是否应该在drake中的某个地方记录flush\u cache
,即使它来自storr
我还发现,如果我使用
mclappy
从多个进程调用readd
,对象不会停留在RAM中,因为它们不会被转移回主进程。可能值得在上问一下,您是否认为文档需要更新,或者有改进的建议。很高兴在我开始之前您就解决了这个问题。drake
中的主要问题现在应该在和中修复。我只是在保存和加载目标的storr
函数调用中将use\u cache
设置为FALSE
drake
有自己的内存管理策略(请参阅make()
的memory\u management
和garbage\u collection
参数),因此我们在内存缓存中不需要storr
。因此,目前我们可能不需要更多的文档。主要更新:手册中有关于内存管理的新章节:。某些功能仅在新发布的drake
7.4.0版中可用。