Y a-t-il un moyen d'obtenir la taille de la mémoire totale sur le système d'exploitation à partir de Java? Utilisation de
Runtime.getRuntime().maxMemory()
4 Réponses :
Il n'y a pas de moyen Java uniquement pour obtenir cette information. Vous pouvez utiliser runtime.exeec () code> pour démarrer les commandes spécifiques au système d'exploitation, par exemple.
/ usr / bin / libre code> sur Linux. Toujours sur les systèmes Linux, vous pouvez utiliser des classes d'accès aux fichiers Java (
fichierInputtream code>) vers Analyse
/ proc / meminfo code>. P>.
Ce n'est pas possible avec pure Java, votre programme s'exécute sur la machine virtuelle Java et est donc isolé du système d'exploitation. Je suggère 2 solutions pour cela: p>
1) Vous pouvez utiliser un JNI et appeler une fonction C ++ pour le faire
2) Une autre option est d'utiliser runtime.exec () code>. Ensuite, vous devez obtenir les informations de
"cat / proc / meminfo" code> p>
com.sun.management.OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) java.lang.management.ManagementFactory.getOperatingSystemMXBean(); long max = bean.getTotalPhysicalMemorySize(); returns available RAM size for JVM (limited by 32bit), not the heap size.
"Restriction d'accès: le type 'operatingsystemmxbean' n'est pas API" dans Java 8, en se référant spécifiquement à celui de com.sun.management code>.
Vous pouvez obtenir l'utilisation du RAM avec cela. Ceci est la même valeur que TaskManager dans Windows affiche
com.sun.management.OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean)java.lang.management.ManagementFactory.getOperatingSystemMXBean(); double percentage = ((double)bean.getFreeMemorySize() / (double)bean.getTotalPhysicalMemorySize()) * 100; percentage = 100 - percentage; System.out.println("RAM Usage: " + percentage + "%");
Qu'est-ce que vous devez savoir i>?
@ Thorbjørn: Si je cours sur une machine avec 2 Go de RAM mais que le JVM est limité à 1 Go, je souhaite obtenir la taille de 2 Go et non la taille de 1 Go est renvoyée à partir du code de l'échantillon. Ou demandez-vous pourquoi j'en ai besoin?
Je demande ce dont vous avez besoin pour i>?
Dans le cadre d'une bibliothèque qui consiste à collecter certaines statistiques d'utilisation (avec consentement de l'utilisateur, bien sûr)