Tôi muốn giám sát các hệ thống thông tin sau đây trong Java:Làm cách nào để theo dõi CPU, bộ nhớ và mức sử dụng đĩa của máy tính trong Java?
- sử dụng CPU hiện tại ** (phần trăm)
- sẵn bộ nhớ * (miễn phí/tổng số)
không gian đĩa có sẵn (miễn phí/tổng số)
* Lưu ý rằng tôi có nghĩa là bộ nhớ tổng thể có sẵn cho toàn bộ hệ thống, không chỉ là JVM.
Tôi đang tìm giải pháp đa nền tảng (Linux, Mac và Windows) không dựa vào mã của riêng tôi gọi các chương trình bên ngoài hoặc sử dụng JNI. Mặc dù đây là những lựa chọn khả thi, tôi không muốn duy trì mã dành riêng cho hệ điều hành nếu ai đó đã có giải pháp tốt hơn.
Nếu có thư viện miễn phí ở đó thực hiện điều này một cách đáng tin cậy, đa nền tảng, điều đó sẽ tuyệt vời (ngay cả khi thực hiện cuộc gọi bên ngoài hoặc sử dụng mã gốc).
Bất kỳ đề xuất nào được đánh giá cao.
Để làm rõ, tôi muốn sử dụng CPU hiện tại cho toàn bộ hệ thống, không chỉ các quy trình Java.
API SIGAR cung cấp tất cả chức năng tôi đang tìm kiếm trong một gói, do đó, đó là câu trả lời hay nhất cho câu hỏi của tôi cho đến thời điểm này. Tuy nhiên, do nó được cấp phép theo GPL, tôi không thể sử dụng nó cho mục đích ban đầu của mình (một nguồn đóng, sản phẩm thương mại). Có khả năng Hyperic có thể cấp phép SIGAR cho mục đích thương mại, nhưng tôi chưa xem xét nó. Đối với các dự án GPL của tôi, tôi chắc chắn sẽ xem xét SIGAR trong tương lai.
Đối với nhu cầu hiện tại của tôi, tôi nghiêng về phía sau:
- Đối với việc sử dụng CPU,
OperatingSystemMXBean.getSystemLoadAverage()/OperatingSystemMXBean.getAvailableProcessors()
(tải trung bình mỗi cpu) - Đối với bộ nhớ,
OperatingSystemMXBean.getTotalPhysicalMemorySize()
vàOperatingSystemMXBean.getFreePhysicalMemorySize()
- Đối với không gian đĩa,
File.getTotalSpace()
vàFile.getUsableSpace()
Hạn chế:
Các phương pháp truy vấn không gian đĩa getSystemLoadAverage()
và không gian đĩa chỉ khả dụng trong Java 6. Ngoài ra, một số chức năng JMX có thể không có sẵn cho tất cả các nền tảng (tức là nó đã được báo cáo rằng getSystemLoadAverage()
trả về -1 trên Windows).
Mặc dù ban đầu được cấp phép theo GPL, nó has been changed đến Apache 2.0, thường có thể được sử dụng cho nguồn đóng, sản phẩm thương mại.
Để làm rõ, các API SIGAR được cho bạn thông tin hệ thống. Nếu bạn muốn thông tin jvm sử dụng JMX. –
SIGAR thuộc GPL không ngăn cản bạn sử dụng nó, nó chỉ có nghĩa là bạn phải liên hệ với các tác giả và yêu cầu cấp phép thay thế. Các tác giả thường vui mừng chấp nhận một khoản phí nhỏ và cho phép cấp phép thương mại. –
Kể từ phiên bản 1.6.4 SIGAR đang sử dụng giấy phép Apache. – Soundlink