【问题标题】:How to retrieve available RAM from Windows command line?如何从 Windows 命令行检索可用 RAM?
【发布时间】:2012-02-24 03:22:23
【问题描述】:

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

【问题讨论】:

  • 您的问题标题与问题文本有点不同。你宁愿在java中检索它吗?
  • @diggingforfire 如果可以的话,目前的建议都不是很好
  • 您的实际问题“如何从 Windows 命令行检索可用 RAM”已经得到解答。您应该更清楚,如果您的问题是“如何在 java 中从 Windows 检索可用 RAM”,那么标题具有误导性。但即使是这个问题的答案也已经给出。您可以简单地解析 systeminfo 命令的输出。

标签: windows command-line cmd


【解决方案1】:

systeminfo 是一个会输出系统信息的命令,包括可用内存

【讨论】:

  • 赞成它是原生的;但它是本地化的,四舍五入并添加逗号。 Total Physical Memory: 3,794 MB
【解决方案2】:
wmic OS get FreePhysicalMemory /Value

【讨论】:

  • 有人知道它返回的值是什么单位吗?我以为是字节,但我的数学并没有锻炼到我拥有的真正价值
【解决方案3】:

使用wmic computersystem get TotalPhysicalMemory。例如:

C:\>wmic computersystem get TotalPhysicalMemory
TotalPhysicalMemory
4294500352

【讨论】:

  • 对不起,我指的是可用内存,而不是总内存
  • 赞成带标题的单个数字输出 - TotalPhysicalMemory\n1234567890
【解决方案4】:
wmic OS get TotalVisibleMemorySize /Value

注意不要像其他地方建议的那样TotalPhysicalMemory

【讨论】:

  • 这不会给出可用 RAM,而是给出总 RAM。对于可用的 RAM,@Everardo 的答案是正确的 - wmic OS get FreePhysicalMemory /Value
  • @OrangeDog 什么操作系统?刚刚在 Win7 x64 和 Windows 10 x64 上尝试过 - 它仍然有效。
【解决方案5】:

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

【讨论】:

    【解决方案6】:

    有点老,但我想知道类似的。只需添加自 IMO 以来我遇到的解决方案,最佳答案来自 Everardo w/ Physical Memory

    wmic OS get FreePhysicalMemory /Value

    这使我对 wmic 进行了更深入的研究……请记住,Free Physical Memory 不是要查看的类型。

    wmic OS get FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles /VALUE

    这会返回类似...

    FreePhysicalMemory=2083440
    FreeSpaceInPagingFiles=3636128
    FreeVirtualMemory=842124
    

    【讨论】:

    • 不是 TotalVisibleMemorySize 吗?
    【解决方案7】:
    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
    

    【讨论】:

    • 也许更好地将字符串更改为“内存”即。系统信息 | findstr“内存”。这只会给你五个条目,都与记忆有关
    【解决方案8】:

    这不能在纯 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;
        }
    }
    

    【讨论】:

      【解决方案9】:

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

      通过许多镜像之一下载,例如这个:SoftPedia page for MemLog.
      MemLog's author has a web site。但这有时会失败。Wayback 机器快照here。)

      示例输出:

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

      878956544 是空闲内存

      【讨论】:

        【解决方案10】:

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

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

        【讨论】:

        • 请注意:这是特定于平台的,可能不适用于所有硬件/软件平台。
        • @Nick:但它通常适用于Windows,所以它已经是一个好的开始
        • 是的,你是对的,对不起,我应该指出这一点,因为问题是特定于 Windows 的。
        【解决方案11】:

        已发布的 wmic 命令的 Powershell 版本:

        Get-CIMInstance Win32_OperatingSystem | Select *memory*
        
        FreePhysicalMemory     : 1507688
        FreeVirtualMemory      : 2131128
        MaxProcessMemorySize   : 137438953344
        TotalVirtualMemorySize : 13639352
        TotalVisibleMemorySize : 8214848
        

        【讨论】:

          【解决方案12】:

          如果您在 Java 程序中需要此功能,您可能需要查看 sigar API:http://www.hyperic.com/products/sigar

          实际上,我知道,这不是问题的答案,而是一个提示,因此您不必重新发明轮子。

          【讨论】:

            猜你喜欢
            • 2011-03-02
            • 1970-01-01
            • 2010-11-14
            • 1970-01-01
            • 1970-01-01
            • 2018-05-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多