R中的高效内存管理

Tae*_*hin 11 memory memory-management r

我的机器中有6 GB的内存(Windows 7 Pro 64位),在R中,我得到了

> memory.limit()
6141
Run Code Online (Sandbox Code Playgroud)

当然,在处理大数据时,会发生内存分配错误.所以为了让R使用虚拟内存,我使用

> memory.limit(50000)
Run Code Online (Sandbox Code Playgroud)

现在,在运行我的脚本时,我不再有内存分配错误,但是R占用了我计算机中的所有内存,因此在脚本完成之前我无法使用该机器.我想知道是否有更好的方法让R管理机器的内存.我认为它可以做的是使用虚拟内存,如果它使用的是物理内存而不是用户指定的内存.有这样的选择吗?

Gre*_*now 9

看看ff和bigmemory包.这使用了解R对象的函数将它们保存在磁盘上,而不是让操作系统(它只知道内存块,而不是它们所代表的内容).


Jos*_*ich 5

R不管理机器的内存.这是操作系统的责任.唯一的原因memory.size,并memory.limit在Windows上存在是因为(从help("Memory-limits")):

 Under Windows, R imposes limits on the total memory allocation
 available to a single session as the OS provides no way to do so:
 see 'memory.size' and 'memory.limit'.
Run Code Online (Sandbox Code Playgroud)

R对象还必须占用RAM中的连续空间,因此只需几个大对象就可能遇到内存分配问题.你可能会对你创建的对象的数量/大小更加小心,并避免使用这么多内存.