2012-02-01 20 views
20

Esiste un'utilità della riga di comando all'interno di Windows o di un programma di terze parti in grado di recuperare la RAM disponibile su una macchina? (Dal momento che non credo che questo possa essere fatto in puro JAVA, dal momento che viene eseguito all'interno di una macchina virtuale, che ha RAM preimpostata/allocata)?Come recuperare la RAM disponibile dalla riga di comando di Windows?

+1

Il titolo questione è un po 'diverso dal testo della domanda. Preferiresti recuperarlo in java? – diggingforfire

+0

@diggingforfire Se possibile, i suggerimenti finora non sono molto validi – Mike

+0

La domanda "Come recuperare la RAM disponibile dalla riga di comando di Windows" è già stata risolta. Dovresti essere più chiaro, se la tua domanda doveva essere "Come recuperare la RAM disponibile da Windows in java", quindi il titolo è fuorviante. Ma anche la risposta è già stata data. Puoi semplicemente analizzare l'output dal comando 'systeminfo'. – diggingforfire

risposta

31

systeminfo è un comando che mostra informazioni di sistema, come la memoria disponibile

+0

upvoted è nativo; ma è localizzato e arrotonda e aggiunge virgole. 'Memoria fisica totale: 3.794 MB' – n611x007

7

C'è un insieme di strumenti utili a basso livello da SysSnternals.

E psinfo può essere il più utile.

I utilizzati i seguenti parametri: PsInfo

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

uscita campione è presente:

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

ingrandita per un programma di utilità non localizzato – n611x007

17

Usa wmic computersystem get TotalPhysicalMemory. Ad esempio:

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

Spiacente, intendevo memoria disponibile, piuttosto memoria totale – Mike

+0

upvoted per output numerico singolo con intestazione -' TotalPhysicalMemory \ n1234567890' – n611x007

0

Solo nel caso avete bisogno di questa funzionalità in un programma Java, si potrebbe desiderare di guardare l'API Sigar: http://www.hyperic.com/products/sigar

In realtà, questa non è una risposta alla domanda, lo so, ma un suggerimento in modo da non dover reinventare la ruota.

8
wmic OS get TotalVisibleMemorySize /Value 

Nota non TotalPhysicalMemory come suggerito altrove

+0

Ciò non darà la disponibilità RAM ma la RAM totale. Per la RAM disponibile, la risposta di @Everardo è corretta - 'Wmic OS get FreePhysicalMemory/Value' –

+0

Bello, grazie! – noonand

+0

@OrangeDog Quale sistema operativo? Ho appena provato questo su Win7 x64 e Windows 10 x64 - è ancora valido. – noonand

1

Questo non può essere fatto in puro Java. Ma puoi eseguire programmi esterni usando java e ottenere il risultato.

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

Prova MemLog. Fa il lavoro perfettamente e rapidamente.

Download tramite uno dei molti mirror, ad es. questo: SoftPedia page for MemLog.
(. MemLog's author has a web site ma questo è giù alcune volte Wayback macchina istantanea here..) Uscita

Esempio:

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

878956544 essendo la memoria libera

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

Forse è meglio cambiare la stringa in solo "Memory". systeminfo | findstr "Memoria". Questo ti restituirà solo cinque voci, tutte collegate alla memoria – noonand

3

Bit vecchio ma Volevo sapere simile. Semplicemente aggiungendo la soluzione mi sono imbattuto in quanto IMO la migliore risposta è venuto da Everardo w/Memoria fisica

wmic OS get FreePhysicalMemory /Value

Questo mi ha portato a guardare più in profondità wmic ... Tenete a mente Memoria fisica disponibile gratuitamente non il tipo da guardare.

wmic OS get FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles /VALUE

Ciò restituisce qualcosa di simile ...

FreePhysicalMemory=2083440 
FreeSpaceInPagingFiles=3636128 
FreeVirtualMemory=842124 
0

Ecco un puro Java soluzione di realtà:

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

Nota: questa è specifica della piattaforma e potrebbe non essere disponibile su tutte le piattaforme hardware/software. – Nick

+0

@Nick: Ma generalmente funziona su 'Windows' quindi è già un buon inizio – BullyWiiPlaza

+0

sì, sei corretto, mi dispiace, avrei dovuto farlo notare perché la domanda era specifica per Windows. – Nick

Problemi correlati