Existe-t-il un utilitaire de ligne de commande dans Windows ou un programme tiers qui peut récupérer les RAM sur une machine? (Puisque je ne pense pas que cela puisse être fait en Java pur, car il est exécuté dans une machine virtuelle, qui a une mémoire RAM prédéfinie/allouée)?
systeminfo
est une commande qui affichera les informations système, y compris la mémoire disponible
wmic OS get FreePhysicalMemory /Value
Utilisation wmic computersystem get TotalPhysicalMemory
. Par exemple.:
C:\>wmic computersystem get TotalPhysicalMemory
TotalPhysicalMemory
4294500352
Il y a tout un tas d'outils utiles de bas niveau de SysSnternals .
Et psinfo
peut être le plus utile.
J'ai utilisé les commutateurs psinfo suivants:
-h Show installed hotfixes.
-d Show disk volume information.
Voici un exemple de sortie:
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 OS get TotalVisibleMemorySize /Value
Notez pas TotalPhysicalMemory
comme suggéré ailleurs
Un peu vieux mais je voulais en savoir de même. Je viens d'ajouter la solution que j'ai trouvée depuis IMO, la meilleure réponse est venue d'Everardo avec mémoire physique
wmic OS get FreePhysicalMemory /Value
Cela m'a amené à approfondir le wmic ... Gardez à l'esprit que la mémoire physique libre n'est pas du genre à regarder.
wmic OS get FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles /VALUE
Cela renvoie quelque chose comme ...
FreePhysicalMemory=2083440
FreeSpaceInPagingFiles=3636128
FreeVirtualMemory=842124
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
Essayez MemLog. Il fait le travail parfaitement et rapidement.
Téléchargez via l'un des nombreux miroirs, par ex. celui-ci: page SoftPedia pour MemLog .
( l'auteur de MemLog a un site Web . Mais cela est parfois en panne. Instantané de la machine Wayback ici .)
Exemple de sortie:
C:\>memlog
2012/02/01,13:22:02,878956544,-1128333312,2136678400,2138578944,-17809408,2147352576
878956544
étant la mémoire libre
Cela ne peut pas être fait en Java pur. Mais vous pouvez exécuter des programmes externes en utilisant Java et obtenir le résultat.
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;
}
}
Voici une pure solution Java
:
public static long getFreePhysicalMemory()
{
com.Sun.management.OperatingSystemMXBean bean =
(com.Sun.management.OperatingSystemMXBean)
Java.lang.management.ManagementFactory.getOperatingSystemMXBean();
return bean.getFreePhysicalMemorySize();
}
Juste au cas où vous auriez besoin de cette fonctionnalité dans un programme Java, vous voudrez peut-être regarder l'API sigar: http://www.hyperic.com/products/sigar =
En fait, ce n'est pas une réponse à la question, je sais, mais un indice pour que vous n'ayez pas à réinventer la roue.