[解決済み】JavaでコンピュータのCPU、メモリ、ディスクの使用状況を監視するには?
質問内容
Javaで以下のシステム情報を監視したい。
- 現在のCPU使用率** (%)
- 使用可能メモリ*(空き容量/総容量)
-
ディスク容量(空き容量/総容量)
*JVMだけでなく、システム全体で利用可能なメモリ全体を意味していることに注意してください。
私は、自分のコードが外部プログラムを呼び出したり、JNIを使用することに依存しないクロスプラットフォームのソリューション(Linux、Mac、Windows)を探しています。これらは実行可能なオプションですが、もし誰かがより良いソリューションを既に持っているならば、OS固有のコードを自分でメンテナンスすることは避けたいと思います。
もし、これを信頼できるクロスプラットフォームな方法で行う無料のライブラリがあれば、それは素晴らしいことです(外部呼び出しやネイティブコード自体を使用するものであっても)。
何かご提案があれば、ぜひお願いします。
明確にするために、私は、Javaプロセス(es)だけでなく、システム全体の現在のCPU使用率を取得したいです。
SIGAR APIは、私が探しているすべての機能を1つのパッケージで提供しているので、今のところ私の質問に対するベストアンサーです。しかし、GPLの下でライセンスされているため、私の本来の目的(クローズドソース、商用製品)には使用できません。HypericがSIGARを商用利用するためにライセンスする可能性はありますが、私は調べていません。私のGPLプロジェクトでは、将来的にSIGARを必ず検討するつもりです。
現在の私のニーズとしては、以下のものに傾いています。
-
CPUの使用率について。
OperatingSystemMXBean.getSystemLoadAverage() / OperatingSystemMXBean.getAvailableProcessors()
(CPUごとの負荷平均) -
メモリの場合
OperatingSystemMXBean.getTotalPhysicalMemorySize()
とOperatingSystemMXBean.getFreePhysicalMemorySize()
-
ディスク容量について
File.getTotalSpace()
とFile.getUsableSpace()
制限事項
は
getSystemLoadAverage()
とディスクスペースの問い合わせ方法は、Java 6でのみ利用可能です。また、一部のJMXの機能は、すべてのプラットフォームで利用できるわけではありません(例えば、以下のようなことが報告されています。
getSystemLoadAverage()
は Windows では -1 を返します)。
本来はGPLでライセンスされていますが は変更されました。 から アパッチ2.0 これは、一般的にクローズドソースの商用製品に使用することができます。
解決するには?
先程の内容に沿って この記事で . を使うことをお勧めします。 SIGAR API . 私は自分のアプリケーションの1つでSIGAR APIを使っていますが、これは素晴らしいものです。 安定していて、よくサポートされており、有用な例でいっぱいであることがわかるでしょう。 このAPIはオープンソースで <ストライク GPL 2 Apache 2.0ライセンスです。 チェックしてみてください。 あなたのニーズを満たすことができると思います。
JavaとSigar APIを使って、メモリ、CPU、ディスク、ロードアベレージ、ネットワークインターフェース情報とメトリクス、プロセステーブル情報、ルート情報などを取得することができます。
関連
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] Androidでアプリケーションのメモリ使用量を確認するにはどうすればよいですか?
-
[解決済み] アプリケーションやプロセスの実際のメモリ使用量を測定するにはどうすればよいですか?
-
[解決済み] Pythonで現在のCPUとRAMの使用率を取得する方法は?
-
[解決済み] iPhone/iPadのディスクの空き容量を確認する方法を教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
Dateが型に解決できない問題を解決する
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
java 例外。Javaツールの初期化
-
ローカルリソースのロードが許可されていない場合の解決策
-
[解決済み】OSレベルのシステム情報を取得する