64 位 R 中的“'Calloc'无法分配内存”
"'Calloc 'could not allocate memory" in 64-bit R
我使用的是 Windows Server 2012(64 位),内存为 30.5 GB,运行 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()
returns 31249
,确认它能够查看和使用所有 30 个演出。
但是,当我对大型数据集(~1000 万行)进行建模调用时:
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 拒绝使用我所有的内存?
问题是 ctree()
函数底层的 C 代码中的错误(正如@JoshuaUlrich 正确怀疑的那样)。原因是 libcoin
包版本 1.0-2 中的整数溢出现已修复,partykit
包基于此构建。
(评论: 我们没有早点了解到这个错误,因为 party
标签没有用于 Whosebug 上的问题,并且没有报告这个问题到今天为止一直到软件包维护者。感谢 Kris Joanidis 报告了这个问题并提供了一个补丁,非常感谢。)
我使用的是 Windows Server 2012(64 位),内存为 30.5 GB,运行 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()
returns 31249
,确认它能够查看和使用所有 30 个演出。
但是,当我对大型数据集(~1000 万行)进行建模调用时:
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 拒绝使用我所有的内存?
问题是 ctree()
函数底层的 C 代码中的错误(正如@JoshuaUlrich 正确怀疑的那样)。原因是 libcoin
包版本 1.0-2 中的整数溢出现已修复,partykit
包基于此构建。
(评论: 我们没有早点了解到这个错误,因为 party
标签没有用于 Whosebug 上的问题,并且没有报告这个问题到今天为止一直到软件包维护者。感谢 Kris Joanidis 报告了这个问题并提供了一个补丁,非常感谢。)