Saya ingin memantau informasi sistem berikut di Jawa:
- Penggunaan CPU saat ini ** (persen)
- Memori yang tersedia * (gratis / total)
Ruang disk yang tersedia (gratis / total)
* Perhatikan bahwa maksud saya keseluruhan memori tersedia untuk seluruh sistem, bukan hanya JVM.
Saya mencari solusi lintas platform (Linux, Mac, dan Windows) yang tidak bergantung pada kode saya sendiri yang memanggil program eksternal atau menggunakan JNI. Walaupun ini adalah opsi yang layak, saya lebih suka tidak memelihara kode spesifik OS sendiri jika seseorang sudah memiliki solusi yang lebih baik.
Jika ada perpustakaan gratis di luar sana yang melakukan ini dengan cara yang dapat diandalkan, lintas-platform, itu akan bagus (bahkan jika itu membuat panggilan eksternal atau menggunakan kode asli itu sendiri).
Semua saran sangatlah diapresiasi.
Untuk memperjelas, saya ingin mendapatkan penggunaan CPU saat ini untuk seluruh sistem, bukan hanya proses Java.
SIGAR API menyediakan semua fungsionalitas yang saya cari dalam satu paket, jadi ini adalah jawaban terbaik untuk pertanyaan saya sejauh ini. Namun, karena dilisensikan di bawah GPL, saya tidak dapat menggunakannya untuk tujuan asli saya (sumber tertutup, produk komersial). Mungkin saja Hyperic melisensikan SIGAR untuk penggunaan komersial, tetapi saya belum memeriksanya. Untuk proyek GPL saya, saya pasti akan mempertimbangkan SIGAR di masa depan.
Untuk kebutuhan saya saat ini, saya condong ke arah yang berikut:
- Untuk penggunaan CPU,
OperatingSystemMXBean.getSystemLoadAverage() / OperatingSystemMXBean.getAvailableProcessors()
(load rata-rata per cpu) - Untuk memori,
OperatingSystemMXBean.getTotalPhysicalMemorySize()
danOperatingSystemMXBean.getFreePhysicalMemorySize()
- Untuk ruang disk,
File.getTotalSpace()
danFile.getUsableSpace()
Keterbatasan:
The getSystemLoadAverage()
dan disk yang metode ruang query hanya tersedia di bawah Jawa 6. Juga, beberapa fungsi JMX mungkin tidak tersedia untuk semua platform (yaitu itu telah melaporkan bahwa getSystemLoadAverage()
pengembalian -1 pada Windows).
Meskipun awalnya dilisensikan di bawah GPL, itu telah diubah menjadi Apache 2.0 , yang umumnya dapat digunakan untuk produk komersial, sumber tertutup.