2012-02-01 10 views
20

¿Hay una utilidad de línea de comandos dentro de Windows o un programa de terceros que pueda recuperar la RAM disponible en una máquina? (Dado que no creo que esto se pueda hacer en JAVA puro, ya que se ejecuta dentro de una máquina virtual, eso tiene memoria RAM asignada/asignada).¿Cómo recuperar la memoria RAM disponible desde la línea de comandos de Windows?

+1

Su título de la pregunta es un poco diferente del texto de la pregunta. ¿Prefieres recuperarlo en Java? – diggingforfire

+0

@diggingforfire Si es posible, las sugerencias hasta ahora no son muy buenas – Mike

+0

Su pregunta real "Cómo recuperar la memoria RAM disponible desde la línea de comandos de Windows" ya se ha respondido. Debería ser más claro, si su pregunta fue "Cómo recuperar la memoria RAM disponible de Windows en Java", entonces el título es engañoso. Pero incluso la respuesta a eso ya ha sido dada. Simplemente puede analizar el resultado del comando 'systeminfo'. – diggingforfire

Respuesta

31

systeminfo es un comando que la información del sistema, incluyendo la memoria disponible

+0

upvoted es nativo; pero está localizado y redondea y agrega comas. 'Memoria física total: 3.794 MB' – n611x007

7

Hay un montón de herramientas útiles de bajo nivel de SysSnternals.

Y psinfo puede ser el más útil.

I utilizaron los siguientes parámetros de PsInfo:

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

Resultado de muestra es la siguiente:

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 para una utilidad no localizada – n611x007

17

Use wmic computersystem get TotalPhysicalMemory. Por ejemplo:

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

Lo siento, quise decir memoria disponible, en lugar de memoria total – Mike

+0

upvoted para Salida de número único con encabezado -' TotalPhysicalMemory \ n1234567890' – n611x007

0

En caso de que necesita esta funcionalidad en un programa Java, es posible que desee ver en la API sigar: http://www.hyperic.com/products/sigar

En realidad, esto no es una respuesta a la pregunta, lo sé, pero una pista para que no tengas que reinventar la rueda.

8
wmic OS get TotalVisibleMemorySize /Value 

Nota no TotalPhysicalMemory como se sugiere en otro lugar

+0

Esto no dará el disponible RAM pero la RAM total. Para la RAM disponible, la respuesta de @Everardo es la correcta - 'wmic OS get FreePhysicalMemory/Value' –

+0

¡Bien hecho, gracias! – noonand

+0

@OrangeDog ¿Qué sistema operativo? Acabo de probar esto en Win7 x64 y Windows 10 x64, sigue siendo válido. – noonand

1

Esto no se puede hacer en Java puro. Pero puede ejecutar programas externos usando Java y obtener el resultado.

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

Probar MemLog. Hace el trabajo perfecto y rápido.

Descargar a través de uno de los muchos espejos, p. este: SoftPedia page for MemLog.
(. MemLog's author has a web site Pero esto se debe algunas veces Wayback Machine instantáneas here..)

Ejemplo de salida:

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

878956544 ser la memoria libre

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

Quizás sea mejor cambiar la cadena a simplemente "memoria". systeminfo | findstr "Memoria". Esto solo le devolverá cinco entradas, todas conectadas con la memoria – noonand

3

poco viejo, pero Yo quería saber algo similar. Simplemente añadiendo la solución me encontré con la OMI ya la mejor respuesta vino de Everardo w/memoria física

wmic OS get FreePhysicalMemory /Value

Esto me lleva a profundizar en wmic ... Tenga en cuenta memoria física libre es no el tipo a mirar.

wmic OS get FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles /VALUE

Esto devuelve algo así como ...

FreePhysicalMemory=2083440 
FreeSpaceInPagingFiles=3636128 
FreeVirtualMemory=842124 
0

Aquí es una solución pura Java realidad:

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

Tenga en cuenta que esto es específico de la plataforma y puede no estar disponible en todas las plataformas de hardware/software. – Nick

+0

@Nick: Pero generalmente funciona en 'Windows', por lo que ya es un buen comienzo – BullyWiiPlaza

+0

sí, tienes razón, lo siento, debería haberlo indicado ya que la pregunta era específica de Windows. – Nick

Cuestiones relacionadas