我有一个关于在内存分配试图超过memory.limit()
时触发错误的问题,例如
> test <- 1:1e10
Error: cannot allocate vector of size 74.5 Gb
In addition: Warning messages:
1: Reached total allocation of 3975Mb: see help(memory.size)
2: Reached total allocation of 3975Mb: see help(memory.size)
3: Reached total allocation of 3975Mb: see help(memory.size)
4: Reached total allocation of 3975Mb: see help(memory.size)
我的主要问题是如何调用此错误消息?内存分配是一个事件,R有一个内部事件监听器,还是在分配任何变量之前调用的一些函数来检查估计的内存使用情况?如果第二个是真的,你理论上可以关闭这个功能吗?
广告评论:
抱歉,我仍然没有得到它。错误来自何处,意味着哪个进程负责错误消息? R如何知道对象超出分配并返回错误? 似乎有两种可能性:
R尝试创建对象 - 系统(或其他一些进程)返回分配不可能--R中断执行并抛出错误 - &gt;这感觉就像是一个事件处理
R通过某些内部函数估算object.size(1:1e10)
,在创建变量之前,它会调用stop(...)
如果我弄错了,请纠正我!
广告评论(Joshua Ulrich):
好的,那么R如何与内存通信?