如何从Windows命令行检索可用RAM?

如何从Windows命令行检索可用RAM?,windows,command-line,cmd,Windows,Command Line,Cmd,Windows或第三方程序中是否有可以检索计算机上可用RAM的命令行实用程序?(因为我不相信这可以在纯JAVA中实现,因为它是在一个虚拟机中运行的,该虚拟机具有预设/分配的RAM)systeminfo是一个命令,它将输出系统信息,包括可用内存。有大量有用的底层工具 而且可能是最有用的 我使用了以下psinfo开关: -h Show installed hotfixes. -d Show disk volume information. 示例输出如下所示: c:>

Windows或第三方程序中是否有可以检索计算机上可用RAM的命令行实用程序?(因为我不相信这可以在纯JAVA中实现,因为它是在一个虚拟机中运行的,该虚拟机具有预设/分配的RAM)

systeminfo
是一个命令,它将输出系统信息,包括可用内存。

有大量有用的底层工具

而且可能是最有用的

我使用了以下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

使用wmic计算机系统获取TotalPhysicalMemory。例如:

C:\>wmic computersystem get TotalPhysicalMemory
TotalPhysicalMemory
4294500352

如果您在Java程序中需要此功能,您可能需要查看sigar API:

事实上,我知道,这不是问题的答案,而是一个提示,这样你就不必重新发明轮子了

wmic OS get TotalVisibleMemorySize /Value

注意不要像其他地方建议的那样
TotalPhysicalMemory
,这不能在纯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;
    }
}

试试MemLog。它完美而快速地完成了这项工作

通过多个镜像中的一个进行下载,例如此镜像:。
(.但有时会出现故障。回程机器快照。)

示例输出:

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

878956544
是可用内存

有点旧了,但我想知道类似的情况。只是添加了我遇到的解决方案,因为我认为最好的答案来自Everardo w/物理内存

wmic OS get FreePhysicalMemory /Value
wmic操作系统获取FreePhysicalMemory/Value

这让我更深入地了解wmic。。。请记住,空闲物理内存不是要查看的类型

wmic操作系统获取FreePhysicalMemory、FreeVirtualMemory、FreeSpaceInPagingFiles/VALUE

这会返回类似于

FreePhysicalMemory=2083440
FreeSpaceInPagingFiles=3636128
FreeVirtualMemory=842124
实际上,这里有一个纯粹的解决方案:

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

已发布wmic命令的Powershell版本:

Get-CIMInstance Win32_OperatingSystem | Select *memory*

FreePhysicalMemory     : 1507688
FreeVirtualMemory      : 2131128
MaxProcessMemorySize   : 137438953344
TotalVirtualMemorySize : 13639352
TotalVisibleMemorySize : 8214848

您的问题标题与问题文本有点不同。您愿意用java检索它吗?@diggingforfire如果可能的话,到目前为止的建议不是很好您的实际问题“如何从Windows命令行检索可用RAM”已经得到了回答。您应该更清楚,如果您的问题是“如何在java中从Windows检索可用RAM”,那么这个标题是误导性的。但即使是这个问题的答案也已经给出了。您可以简单地分析来自
systeminfo
命令的输出。对不起,我指的是可用内存,而不是针对带有标题的单个数字输出的总内存-
TotalPhysicalMemory\n1234567890
这不会给出可用RAM,而是总RAM。对于可用RAM,@Everardo给出的答案是正确的-
wmic OS get FreePhysicalMemory/Value
@OrangeDog什么操作系统?刚刚在Win7 x64和Windows 10 x64上尝试过这个-它仍然有效;但它是本地化的,并循环和添加逗号<代码>总物理内存:3794MB最好将字符串改为“内存”,即。systeminfo | findstr“内存”。这只会返回五个条目,所有条目都与内存有关请注意:这是特定于平台的,可能无法在所有硬件/软件平台上使用。@Nick:但它通常在
Windows
上工作,因此它已经是一个很好的起点了。是的,您是对的,对不起,我应该指出这一点,因为问题是针对windows的。它不是TotalVisibleMemorySize吗?有人知道它返回的值是多少单位吗?我以为是个字节,但我的数学没有达到我的真实值
Get-CIMInstance Win32_OperatingSystem | Select *memory*

FreePhysicalMemory     : 1507688
FreeVirtualMemory      : 2131128
MaxProcessMemorySize   : 137438953344
TotalVirtualMemorySize : 13639352
TotalVisibleMemorySize : 8214848