R的memory.size()仅仅是一个窗口.对于其他功能(例如windows()),帮助页面提供指向非Windows对应项的指针.但是因为memory.size()我找不到这样的指针.所以这是我的问题:是否有一个函数可以做同样memory.size()但在linux中?
RHe*_*tel 11
我认为这应该由操作系统处理.我所知道的没有内置限制; 如果有必要,R将使用它可以获得的所有内存.
要获取有关linux中总数和/或可用内存的信息,您可以尝试
system('grep MemTotal /proc/meminfo')
Run Code Online (Sandbox Code Playgroud)
要么
system('free -m')
Run Code Online (Sandbox Code Playgroud)
要么
system('lshw -class memory')
Run Code Online (Sandbox Code Playgroud)
最后一个命令会抱怨你应该以超级用户的身份运行它,它会发出一个警告,提示输出可能不准确; 但根据我的经验,它仍然会提供相当有用的输出.
要获取有关正在运行的R脚本的内存使用情况的信息,可以通过top在单独的终端中启动来监视当前使用的资源,或者使用例如R脚本中的以下系统调用:
system(paste0("cat /proc/",Sys.getpid(),"/status | grep VmSize"))
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
使用pyr库:
library("pryr")
mem_used()
# 27.9 MB
x <- mem_used()
x
# 27.9 MB
class(x)
# [1] "bytes"
Run Code Online (Sandbox Code Playgroud)
结果与@RHertel 的答案相同,使用pryr我们可以将结果分配给变量。
system('grep MemTotal /proc/meminfo')
# MemTotal: 263844272 kB
Run Code Online (Sandbox Code Playgroud)
要使用系统调用分配给变量,请使用intern = TRUE:
x <- system('grep MemTotal /proc/meminfo', intern = TRUE)
x
# [1] "MemTotal: 263844272 kB"
class(x)
# [1] "character"
Run Code Online (Sandbox Code Playgroud)