R内存限制警告vs"无法分配......"

Gre*_*egS 10 r

记忆警告会影响我的R分析吗?

在RI中运行大型数据分析脚本时会收到类似的警告:

在'...'达到_ __Mb的总分配:看帮助......

但我的脚本继续没有错误,只是警告.使用其他数据集,我得到一个错误:

错误:无法分配大小为___Mb的向量:

我知道错误会破坏我的数据分析,但是只是收到警告有什么问题吗?我没有注意到我的数据集中有任何遗漏,但它非常大,我没有办法检查所有内容.我在18000Mb分配给内存,不能合理分配更多.

Blu*_*ter 8

回到R 2.5.1新闻我发现这个内存分配警告的引用:

malloc.c已更新至2.8.3版.此版本的分配策略略有不同,并且可能会更好地接近地址空间限制,但可能会在成功分配之前提供有关达到总分配的更多警告.

基于这个注释,我假设(没有内部实现的任何高级知识)当R(malloc.c)中的内存分配调用未能尝试分配内存时,会发出警告.多次尝试分配内存,可能使用不同的方法,并可能调用垃圾收集器.只有当malloc相当确定无法进行分配时才会返回错误.

警告不会危及现有的R对象.它们只是通知用户R接近计算机内存的限制.

(我希望知识渊博的用户可以证实这一点...)

  • 确实,R 在发出警告时调用了垃圾收集器。您可以使用 gcinfo(TRUE) 启用日志记录并在限制范围内仔细分配内存,以观察一些警告和 GC 消息以了解成功分配。 (2认同)