代码之家  ›  专栏  ›  技术社区  ›  bsdfish

r的gc和内存限制问题

  •  5
  • bsdfish  · 技术社区  · 15 年前

    我在一些比较大的数据上使用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
    

    然而,R似乎在常驻内存中分配了4GB,而在交换内存中分配了2GB。我假设这是操作系统分配的内存,R的内存管理系统将根据需要分配和GC。然而,假设我不想让R操作系统分配超过4GB的内存,以防止交换的不稳定。我可以一直这样做,但那样的话,它就会崩溃,而不是在减少的空间内工作,更频繁地进行gcing。有没有一种方法可以为gc触发器指定一个任意的最大值,并确保r从不分配更多的操作系统?或者我还能做些什么来管理内存使用?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Dirk is no longer here    15 年前

    简言之:不,我发现你根本无法管理记忆管理,而且 gc() .

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