我正在尝试在内存小于4GB的计算机上运行一些代码。我使用32位版本的R来强制执行内存上限。当我试图运行内存占用命令并且一切都中断时,我正在接近脚本末尾的墙。但内存占用任务本身需要不到4GB。我已经将问题缩小到这样的事实 - 尽管在当前会话中清除了内存中的所有对象--R控制台仍然保持1.9GB的RAM。下面的屏幕截图突出显示了我遇到问题的确切位置:注意内存中没有任何对象,但是任务管理器说这个R的实例有1.8578GB的RAM。
如果我清除内存中的所有对象,然后运行仍然无法清除所有内存的- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.view endEditing:YES];
}
(正如您在屏幕截图中看到的那样)。
是否可以以某种方式清除此记忆?
如果有任何用处,您可以通过运行this script
重现此问题直至崩溃。 谢谢你!编辑:在脚本的最后我得到
gc()
答案 0 :(得分:1)
这不仅适用于R,也适用于Windows。通常,如果您已删除R中的变量/对象。该过程会将内存释放到操作系统,但由于Windows的工作。该内存不会完全释放,它会被保留,以防进程再次请求内存,因此您将看到R仍然保留所有内存。
所以请不要担心,这是为了重复使用:)
答案 1 :(得分:0)
退出R后是否释放了内存?
也许您在磁盘中读取了一些数据(存储在临时文件中)而不是加载到R.所以gc()
不会捕获它。
或者从一开始就mem_change(your command here)
看看会导致内存变化的原因。
答案 2 :(得分:0)
尝试使用命令
memory.limit()
# [1] 1934
memory.size()
# you can increase memory limit for that particular session in Windows machine
memory.limit(10000) ## Size in Mbs
memory.limit
# [1] 10000
由于你的是32位,你的最大限制是4095 MB。要在memory.size()和memory.limit()上查看更多信息,请在R控制台上使用以下命令并阅读相关内容。
?memory.limit()
?memory.size()
希望你得到的帮助不大。您可以至少为该特定会话增加内存限制。