"' Calloc'无法分配内存"在64位R中

时间:2015-01-16 00:18:31

标签: r memory party

我在Windows Server 2012(64位)上使用30.5 GB的RAM,在RStudio 0.98中运行R v3.1.2,但是在R达到内存限制时仍然遇到问题。

我在这里查看了常见问题:http://cran.r-project.org/bin/windows/base/rw-FAQ.html#There-seems-to-be-a-limit-on-the-memory-it-uses_0021

其中指出64位实例的内存限制默认为RAM的总量,并且可以使用memory.limit()来检查和设置限制。

致电memory.limit()会回复31249,确认它能够查看并使用所有30场演出。

但是,当我在大型数据集(~10M行)上进行建模调用时:

ctree(as.formula(formula), data=d, control=ctree_control(mincriterion=0.9, minbucket=1000))

我收到以下错误:

'Calloc' could not allocate memory (18446744073673801728 of 8 bytes) 

但是看看系统任务管理器我可以看到超过25GB仍然可用,并且R只使用2.3GB。

在RStudio和R之外运行建模直接产生相同的结果,因此RStudio不是变量。

我感到困惑 - 为什么R拒绝使用我所有的记忆?

1 个答案:

答案 0 :(得分:2)

问题是ctree()函数底层的C代码中有一个错误(@JoshuaUlrich正确怀疑)。原因是libcoin软件包所基于的partykit软件包版本1.0-2中已解决的整数溢出问题。

评论:我们之前没有了解此错误,因为在此处StackOverflow上的问题未使用party标签,并且直到包维护人员都未报告该问题。今天。感谢Kris Joanidis报告了问题并提供了补丁,非常感谢。)