【发布时间】:2011-09-12 19:23:34
【问题描述】:
根据 Windows 任务管理器的报告,我正在运行深度嵌套并消耗大量内存的函数。输出变量相对较小(比消耗的内存量小 1-2 个数量级),因此我假设差异可归因于函数中某处分配的中间变量(或在被调用的子函数中)和垃圾收集的延迟。所以,我的问题是:
1) 我的假设正确吗?为什么或者为什么不?
2) 简单地将函数调用嵌套得更深而不是分配中间变量有什么意义吗?这会减少内存使用吗?
3) 假设 R 在具有 4GB RAM 的系统上使用 3GB 内存。运行 gc() 后,它现在只使用 2GB。在这种情况下,如果我调用另一个耗尽 1.5GB 内存的函数,R 是否足够聪明,可以自行运行垃圾收集?
我正在使用的某些数据集在处理它们时会因内存不足而导致系统崩溃,我正在尝试缓解这种情况。提前感谢您的任何回答!
乔什
【问题讨论】:
标签: r memory garbage-collection