Baru -baru ini, saya sedang mengerjakan sebuah proyek untuk mendapatkan informasi sistem seperti CPU Share. banyak teknologi baru.
Di Java, Anda dapat memperoleh informasi seperti memori fisik total, memori fisik yang tersisa, memori fisik yang digunakan, dll. Contoh -contoh berikut dapat memperoleh informasi ini dan mendapatkan laju penggunaan memori di bawah Windows.
Pertama, tulis kelas monitorinfobean untuk memuat beberapa informasi pemantauan, termasuk memori fisik, memori fisik yang tersisa, memori fisik yang digunakan, penggunaan memori dan bidang lainnya.
Paket com.amgkaka. Memori monitorinfobean { /*** /** dapat digunakan. / Private Long MaxMemory; memori. / ** Penggunaan CPU./ Private Double Cpuratio; SetFreephysicalMemorySize (long freephysicalMemorySize) {this .freephysicalMemorySize = freephysicalMemorySize public ge tmaxmory () {return {publicmory (long maxMemory; publik void setosname (string osname) {this .osname = osname; Public Void SettotalMemorySize (TotalMemorySize) {this .totalMemorySize = TotalMemorySize; } public void setuseMemory (Long UsedMemory) {this .usedMemory = UsedMemory;
Kemudian tulis antarmuka untuk mendapatkan informasi pemantauan saat ini.
Paket com.amgkaka. Antarmuka publik ImonitorService { /** * / /** * Dapatkan objek pemantauan saat ini. : 08 */ Public Monitorinfobean GetMonitorInfobean () melempar pengecualian;}
Kelas Implementasi MonitorServiceImpl dari kelas ini adalah sebagai berikut:
Paket Com.Amgkaka.Peria; Kelas Implementasi Logika Bisnis. Tingkat hunian CPU selama pemeriksaan tidak akurat. * @Return Kembalikan objek pemantauan yang dibangun * @Throws Exception * @Author AMG * Tanggal Penciptaan: 2008-4-25-10:45:08 AM */ Public MonitorInfobean getMonitorInfobean () Melemparkan episode exc {int KB = 1024; Memori dapat digunakan TotalMemory = runtime.getRuntime (). TotalMemory () / KB; getRuntime () .MaxMemory () / kb; .GettotalphysicalMemorySize () / KB; Dapatkan Total Threadgroup ParentThread; untuk (ParentThread = Thread.CurrentThread (). GetThreadGroup (); ParentThread.getParent ()! = NULL; ParentThread = PA rentThread.getParent ()); ; Freememory); Ize); ); ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::: CPuratio); *// ** * Dapatkan penggunaan CPU. .getEnv ("windir") + "//system32//wbem//wmic.exe Get Caption, Commandlin E," + "Kernelmodetime, ReadOperationCount, ThreadCount, UserModetime, WriteOperationCount"; = ReadCpu (runtime.getRuntime (). Exec (proccmd)); ! = NULL) {long iDletime = C1 [0] - C0 [0]; (} lain {return 0.0; @Author AMG * Tanggal Penciptaan: 2008-4-25-06:10:14 PM */ Private Long [] ReadCpu (Proc ProceT Final) {Long [] Retn = New Long [2]; .close (); <FaultLength) {return null;} int capidx = line.indexof ("caption"); "UserModetime"); input.readline ())! = null) {if (line.length () <wocidx) {lanjutkan; Bytes.substring (baris, capidx, cmdidx - 1) .trim (); > = 0) {lanjutkan;} // log.info ("line =" +line); .valueof (bytes.substring (line, kmtidx, rocidx - 1) .trim ()) .longValue (); LongValue (); , wocidx - 1) .trim ()) .longValue (); {coba {proc.getInputStream (). Tutup (); Lempar Pengecualian * @Author AMG * Tanggal Penciptaan: 2008-4-30-04:47:29 PM */ Public Static Void Main (String [] Args) melempar Exception {IM Onitorservice Service = MonitorServiceImpl (); .getMonitorInfobean (); "Memori yang tersisa =" + monitorinfo.getFreemeMory ()); ()); ); ;}}
Kelas implementasi ini membutuhkan kelas alat yang menulis byte sendiri.
Paket com.amgkaka. /** * / /** * Karena string.substring memiliki masalah dengan pemrosesan karakter Cina (mempertimbangkan karakter Cina sebagai byte), ada bahaya tersembunyi ketika * berisi karakter Cina. String * @param start_idx Mulai koordinat (termasuk koordinat ini) * @param end_idx cutoff koordinat (termasuk koordinat ini) * @return */ public static string substring (string src, int start_idx, int en d_idx) {byte [] b = src .getBytes ();
Jalankan kelas MonitorBeanImpl dan pembaca akan melihat memori saat ini, pemanfaatan CPU dan informasi lainnya.
PS: Metode untuk mendapatkan semua nama host di LAN
impor java.net.inetaddress; import java.net.unknownhostException; kelas publik A {static public void main (string [] args) {try {// dapatkan alamat IP i melalui nama host netAddress alamat = inetaddress.getByName ("192.168 .9.148 "); System.out.println (" 192.168.9.148 "+": "+address.gethostaddress ()); // Dapatkan nama host melalui ip string ips =" 192.168.9. ", Ip; inetaddress addip iPs =" 192.168.9. ", ip; inetaddress addip ; catc h (unknownHostException uHE) {System.err.println ("Tidak dapat menemukan:"+"192.168.9.148");