Récemment, je travaillais sur un projet pour obtenir des informations sur le système telles que CPU Share. beaucoup de nouvelles technologies.
En Java, vous pouvez obtenir des informations telles que la mémoire physique totale, la mémoire physique restante, la mémoire physique utilisée, etc. Les exemples suivants peuvent obtenir ces informations et obtenir le taux d'utilisation de la mémoire sous Windows.
Tout d'abord, écrivez une classe de surveillance en bobine pour charger certaines informations de surveillance, y compris la mémoire physique, la mémoire physique restante, la mémoire physique, l'utilisation de la mémoire et d'autres champs.
Package com.amgkaka.performance; Monitorique de la mémoire est utilisable. / Système opérationnel privé. Mémoire. / ** Utilisation du CPU. setFreephySicalMemorySize (long FreephysicalMemorySize) {Ce .freephysicalmemorySize = FreePhySicalMorySize; } public VOIDE SETOSNAME (String Osname) {Cet. public void SettotalmorySize (Long TotalMemorySize) {ce .totalmorySize = TotalMemorySize;} public int GetTotalthread () {RETOUR } public void SetUsedMemory (Long UsedMemory) {this .UsedMemory = UsedMemory;} public Double GetCPuratio () {return Cpuratio;
Écrivez ensuite une interface pour obtenir les informations de surveillance actuelles.
package com.amgkaka.performance; Interface publique ImonitorService {/ ** * / / ** * Obtenez l'objet de surveillance actuel. : 08 * / public MonitorInfobean getMonitorInfobean () lève une exception;
La classe de mise en œuvre monitorservicempll de cette classe est la suivante:
package com.amgkaka.performance; Classe de mise en œuvre de la logique commerciale. Le taux d'occupation du CPU pendant la vérification n'est pas précis. * @return Renvoie l'objet de surveillance construit * @throws exception * @Author AMG * Date de création: 2008-4-25 - 10:45:08 AM * / public MonitorInfobean getMonitorInfobean () lance ENCH Episode {int kb = 1024; La mémoire peut être utilisée Long TotalMemory = runtime.getRuntime (). TotalMemory () / kb; getRuntime () .maxMemory () / kb; .getTotalphysicalMemorySize () / kb; Obtenez le nombre total de threads threadgroup parentThread; ; FreeMory); ; )); : :::::::::::::::::::::::::::::::::::- :::::::::::::::::::::::::::::::::::- * / / ** * Obtenez l'utilisation du CPU. .Gettenv ("windir") + "//system32//wbem//wmic.exe Process Get Lessiement, Commandlin E," + "KernelModetime, ReadOperationCount, ThreadCount, UserMoDetime, WriteOperationCount"; = readcpu (runtime.getRuntime (). ! = null) {long idleTime = c1 [0] - c0 [0]; ();} else {return 0.0;}} catch (exception ex) {ex.printStackTrace (); @Author AMG * Date de création: 2008-4-25 - 06:10:14 PM * / Private Long [] Readcpu (processus final Proc) {long [] retn = new long [2]; .Close (); InputStreamReader IR = NOUVEAU INTROPPORTÉE (Proc.getInputStream ()); <FaultLength) {return null;} int capidx = line.indexof ("légende"); (USERMODETIME "); int kmtidx = ligne.inde input.readline ())! = null) {if (line.length () <wocidx) {continu Bytes.SubString (ligne, capidx, cmDidx - 1) .trim (); String cmd = bytes.substring (line, cmDid x, kmtidx - 1) .trim (); > = 0) {continue;} // log.info ("line =" + line); .Valueof (bytes.substring (ligne, kmtidx, rocidx - 1) .trim ()) .longValue (); idleTime + = long.valueof (bytes.substring (ligne, umtidx, wocidx - 1) .Trim ()). LongValue (); , wocidx - 1) .trim (). {try {proc.getInputStream (). lance une exception * @author AMG * Date de création: 2008-4-30 - 04:47:29 PM * / public static void main (String [] args) lève l'exception {im oniTorService Service = new monitorServiceImpll (); .getPonitorInfobean (); ("Mémoire restante =" + MonitorInfo.getFreEmory ()); ()); ); ;
Cette classe d'implémentation nécessite une classe d'outils qui écrit l'octet par vous-même.
package com.amgkaka.performance; / ** * / / ** * Puisque String.Substring a des problèmes avec le traitement du caractère chinois (considérant un caractère chinois comme un octet), il y a des dangers cachés lorsque * contient des caractères chinois. String * @param start_idx Démarrer la coordonnée (y compris cette coordonnée) * @param end_idx Coupoff Coordonate (y compris cette coordonnée) * @return * / public static String substring (String src, int start_idx, int en d_idx) {byte [] b = src .getBytes ();
Exécutez la classe MonitorBeanImpl et les lecteurs verront la mémoire actuelle, l'utilisation du processeur et d'autres informations.
PS: Méthode pour obtenir tous les noms d'hôtes dans le LAN
Importer java.net.inetAddress; import java.net.unknownhostException; public class a {static public void main (string [] args) {try {// obtenir l'adresse IP i via le nom d'hôte netaddress adresse = inetAddress.getbyName ("192.168 .9.148 "); System.out.println (" 192.168.9.148 "+": "+ adresse.GethostAddress ()); // Obtenez le nom d'hôte via la chaîne ip ips =" 192.168.9. " ; CATC H (UnknownHostException uhe) {System.err.println ("Impossible de trouver:" + "192.168.9.148");