如何检查在Windows机器上使用R可用的系统内存?

我正在运行一个multithreading的R程序,但由于主机系统内存不足而导致某些节点崩溃。 有没有办法让每个节点在继续运行之前检查整个系统的可用内存? (机器正在运行Windows Server 2012 R2)

也许下面的一个会帮助(我也在Windows server 2012 R2上):

也许这将是最有用的:

> system('systeminfo') #the output is too big to show but you can save into a list and choose the rows you want 

或者只是使用以下具体的内存之一

 > system('wmic MemoryChip get BankLabel, Capacity, MemoryType, TypeDetail, Speed') BankLabel Capacity MemoryType Speed TypeDetail RAM slot #0 8589934592 2 512 RAM slot #1 4294967296 2 512 

可用内存:

 > system('wmic OS get FreePhysicalMemory /Value') FreePhysicalMemory=8044340 

可用内存总量

 > system('wmic OS get TotalVisibleMemorySize /Value') TotalVisibleMemorySize=12582456 

基本上,你甚至可以运行任何你想要的其他命令,你知道它可以帮助你通过system功能。 R会在屏幕上显示输出,然后你可以保存到一个data.frame,并使用你想要的。

我把LyzandeR的答案包装在一个以千字节(1024字节)为单位返回物理内存的函数中。 测试在Windows 7上。

 get_free_ram <- function(){ if(Sys.info()[["sysname"]] == "Windows"){ x <- system2("wmic", args = "OS get FreePhysicalMemory /Value", stdout = TRUE) x <- x[grepl("FreePhysicalMemory", x)] x <- gsub("FreePhysicalMemory=", "", x, fixed = TRUE) x <- gsub("\r", "", x, fixed = TRUE) as.integer(x) } else { stop("Only supported on Windows OS") } }