R的GC和内存限制问题

bsd*_*ish 5 memory garbage-collection r

我在一些相对较大的数据上使用R并且遇到了一些内存问题.这是在Linux上.我的数据明显少于系统上的可用内存,因此这是管理瞬态分配的问题.

当我运行gc()时,我得到以下列表

           used   (Mb) gc trigger   (Mb)  max used   (Mb)
Ncells   2147186  114.7    3215540  171.8   2945794  157.4
Vcells 251427223 1918.3  592488509 4520.4 592482377 4520.3
Run Code Online (Sandbox Code Playgroud)

但是R似乎在驻留内存中分配了4GB,在交换中分配了2GB.我假设这是操作系统分配的内存,R的内存管理系统将根据需要分配和GC.但是,让我说我不想让R OS分配超过4gb,以防止交换抖动.我总是可以使用ulimit,但之后它会崩溃而不是在缩小的空间内工作并且更频繁地使用GCing.有没有办法为gc触发器指定任意最大值并确保R从不进行os分配更多?或者我还能做些什么来管理内存使用?

Dir*_*tel 3

简而言之:不。我发现你根本无法对内存管理和gc().

另一方面,您可以尝试将数据保存在内存中,但在 R 的“外部”。大内存使这变得相当容易。当然,使用 64 位版本的 R 和充足的内存也可能使问题消失。