2012-02-01 49 views
20

Windows或第三方程序中是否有可以检索计算机上可用RAM的命令行工具? (因为我不相信这可以在纯Java中完成,因为它在虚拟机中运行,它具有预设/分配的RAM)?如何从Windows命令行检索可用的RAM?

+1

你的问题的标题是问题文本有点不同。你愿意在java中检索它吗? – diggingforfire 2012-02-01 12:43:06

+0

@diggingforfire如果可能,目前为止的建议不是很好 – Mike 2012-02-01 13:21:02

+0

您的实际问题“如何从Windows命令行检索可用RAM”已得到解答。你应该更清楚一点,如果你的问题的目的是“如何从Java中检索可用的RAM”,那么标题会误导人。但即使已经给出了答案。你可以简单地解析'systeminfo'命令的输出。 – diggingforfire 2012-02-01 14:21:07

回答

31

systeminfo是一个命令,该命令将输出系统信息,包括可用存储器

+0

upvoted它是原生的;但是它是本地化的并且增加了逗号。 '总物理内存:3,794 MB' – n611x007 2015-07-12 12:44:02

7

有从SysSnternals的有用的低级别的工具一大堆。

psinfo可能是最有用的。

我用下面中psinfo开关:

-h  Show installed hotfixes. 
-d  Show disk volume information. 

示例输出是这样的:

c:> psinfo \\development -h -d 

PsInfo v1.6 - local and remote system information viewer 
Copyright (C) 2001-2004 Mark Russinovich 
Sysinternals - www.sysinternals.com 


System information for \\DEVELOPMENT: 
Uptime: 28 days, 0 hours, 15 minutes, 12 seconds 
Kernel version: Microsoft Windows XP, Multiprocessor Free 
Product type Professional 
Product version: 5.1 
Service pack: 0 
Kernel build number: 2600 
Registered organization: Sysinternals 
Registered owner: Mark Russinovich 
Install date: 1/2/2002, 5:29:21 PM 
Activation status: Activated 
IE version: 6.0000 
System root: C:\WINDOWS 
Processors: 2 
Processor speed: 1.0 GHz 
Processor type: Intel Pentium III 
Physical memory: 1024 MB 
Volume Type Format Label Size Free Free 
A: Removable 0% 
C: Fixed NTFS WINXP 7.8 GB 1.3 GB 16% 
D: Fixed NTFS DEV 10.7 GB 809.7 MB 7% 
E: Fixed NTFS SRC 4.5 GB 1.8 GB 41% 
F: Fixed NTFS MSDN 2.4 GB 587.5 MB 24% 
G: Fixed NTFS GAMES 8.0 GB 1.0 GB 13% 
H: CD-ROM CDFS JEDIOUTCAST 633.6 MB 0% 
I: CD-ROM 0% Q: Remote 0% 
T: Fixed NTFS Test 502.0 MB 496.7 MB 99% 
OS Hot Fix Installed 
Q147222 1/2/2002 
Q309521 1/4/2002 
Q311889 1/4/2002 
Q313484 1/4/2002 
Q314147 3/6/2002 
Q314862 3/13/2002 
Q315000 1/8/2002 
Q315403 3/13/2002 
Q317277 3/20/2002 
+1

upvoted for一个非本地化的工具 – n611x007 2015-07-12 12:41:42

17

使用wmic computersystem get TotalPhysicalMemory。例如:

C:\>wmic computersystem get TotalPhysicalMemory 
TotalPhysicalMemory 
4294500352 
+0

对不起,我的意思是可用内存,而不是总内存 – Mike 2012-02-01 12:50:28

+0

upvoted为单头数字输出 - 'TotalPhysicalMemory \ n1234567890' – n611x007 2015-07-12 12:43:06

0

万一你在Java程序需要此功能,你可能想看看SIGAR API:http://www.hyperic.com/products/sigar

其实,这是没有问题的答案,我知道,但一个提示,所以你不必重新发明轮子。

8
wmic OS get TotalVisibleMemorySize /Value 

注意不TotalPhysicalMemory其他地方一样

+0

这不会给可用RAM,但总RAM。对于可用的RAM,@Everardo的答案是正确的 - 'wmic OS获得FreePhysicalMemory/Value' – 2014-03-31 16:03:03

+0

很好,谢谢! – noonand 2014-03-31 16:40:54

+0

@OrangeDog什么操作系统?刚刚在Win7 x64和Windows 10 x64上尝试过 - 它仍然有效。 – noonand 2016-06-17 13:36:18

1

这不能用纯Java来完成建议。但是你可以使用java运行外部程序并获得结果。

Process p=Runtime.getRuntime().exec("systeminfo"); 
Scanner scan=new Scanner(p.getInputStream()); 
while(scan.hasNext()){ 
    String temp=scan.nextLine(); 
    if(temp.equals("Available Physical Memmory")){ 
     System.out.println("RAM :"temp.split(":")[1]); 
     break; 
    } 
} 
1

尝试使用MemLog。它完美快速地完成了这项工作。

通过许多镜子之一下载,例如这一个:SoftPedia page for MemLog
MemLog's author has a web site但是,这是向下一些倍韦巴克机快照here。)

输出示例:

C:\>memlog 
2012/02/01,13:22:02,878956544,-1128333312,2136678400,2138578944,-17809408,2147352576 

878956544是空闲内存

25
wmic OS get FreePhysicalMemory /Value 
2
PS C:\Users\Rack> systeminfo | findstr "System Memory" 
System Boot Time:   5/5/2016, 11:10:41 PM 
System Manufacturer:  VMware, Inc. 
System Model:    VMware Virtual Platform 
System Type:    x64-based PC 
System Directory:   C:\Windows\system32 
System Locale:    en-us;English (United States) 
Total Physical Memory:  40,959 MB 
Available Physical Memory: 36,311 MB 
Virtual Memory: Max Size: 45,054 MB 
Virtual Memory: Available: 41,390 MB 
Virtual Memory: In Use: 3,664 MB 
+0

也许更好地改变字符串只是“记忆”即, systeminfo | findstr“内存”。这只会返回五个条目,全部与内存相连 – noonand 2016-06-17 13:30:29

3

位旧但我想知道类似的。只需添加我碰到因为IMO的解决方案的最佳答案来自埃韦拉多W /物理内存

wmic OS get FreePhysicalMemory /Value

这使我更深入了解WMIC ......请记住,可用物理内存是不是要看的类型。

wmic OS get FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles /VALUE

这将返回类似...

FreePhysicalMemory=2083440 
FreeSpaceInPagingFiles=3636128 
FreeVirtualMemory=842124 
0

这里是一个纯Java解决方案实际上是:

public static long getFreePhysicalMemory() 
{ 
    com.sun.management.OperatingSystemMXBean bean = 
      (com.sun.management.OperatingSystemMXBean) 
        java.lang.management.ManagementFactory.getOperatingSystemMXBean(); 
    return bean.getFreePhysicalMemorySize(); 
} 
+0

请注意:这是特定于平台的,可能不适用于所有硬件/软件平台。 – Nick 2017-01-17 01:51:10

+0

@Nick:但它通常在'Windows'上工作,所以它已经是一个好开始 – BullyWiiPlaza 2017-01-17 07:11:00

+0

是的,你是对的,对不起,我应该指出,因为问题是特定于Windows。 – Nick 2017-01-17 15:07:39