我在R(在Windows下)运行我的代码,其中涉及大量的内存数据.我试图用来rm(list=ls())清理内存,但似乎内存仍然被占用,我无法重新运行我的代码.我试图关闭R并重新启动R,但它是一样的,似乎内存仍然被占用,因为当我运行代码它说它不能分配内存(但它可能在第一次).重新启动电脑后,内存似乎只清理了.
有没有办法清理内存,以便我可以重新运行我的代码而不必每次都重新启动我的电脑?
Ala*_*lan 65
也许你可以尝试使用这个功能gc().调用gc()导致垃圾收集发生.gc()删除大对象后调用会很有用,因为这可能会提示R将内存返回给操作系统.
gc()还返回占用内存的摘要.
小智 21
我遇到了与R相同的问题.我挖了一点并提出了解决方案,我们需要重新启动R会话以完全清理内存/ RAM.为此,您可以在从工作区中删除所有内容后使用简单的代码.代码如下:
rm(list = ls())
.rs.restartR()
Run Code Online (Sandbox Code Playgroud)
小智 6
memory.size(max=T) # gives the amount of memory obtained by the OS
[1] 1800
memory.size(max=F) # gives the amount of memory being used
[1] 261.17
Run Code Online (Sandbox Code Playgroud)
用保罗的例子,
m = matrix(runif(10e7), 10000, 1000)
Run Code Online (Sandbox Code Playgroud)
现在
memory.size(max=F)
[1] 1024.18
Run Code Online (Sandbox Code Playgroud)
清理记忆
gc()
memory.size(max=F)
[1] 184.86
Run Code Online (Sandbox Code Playgroud)
换句话说,现在应该再次清除记忆。如果循环代码,最好gc()在循环的最后一行添加 a ,以便在开始下一次迭代之前清除内存。