Javaで次のシステム情報を監視したいと思います。
利用可能なディスク容量(無料/合計)
*私は、JVMだけでなく、システム全体で利用可能なメモリ全体を意味することに注意してください。
私は、自分のコードが外部プログラムを呼び出したりJNIを使用したりすることに依存しないクロスプラットフォームソリューション(Linux、Mac、Windows)を探しています。これらは実行可能なオプションですが、誰かがすでにより良い解決策を持っている場合、私はOS固有のコードを自分で維持しないことを望みます。
信頼できるクロスプラットフォームの方法でこれを行う無料のライブラリがあれば、それは素晴らしいことです(外部呼び出しを行ったり、ネイティブコード自体を使用したりする場合でも)。
どんな提案も大歓迎です。
明確にするために、Javaプロセスだけでなく、システム全体の現在のCPU使用率を取得したいと思います。
SIGAR APIは、探しているすべての機能を1つのパッケージで提供するため、これまでの私の質問に対する最良の答えです。ただし、GPLでライセンスされているため、元の目的(クローズドソース、商用製品)には使用できません。HypericがSIGARの商用利用を許可する可能性はありますが、まだ調べていません。私のGPLプロジェクトでは、将来的に間違いなくSIGARを検討します。
私の現在のニーズのために、私は次のことに傾いています。
OperatingSystemMXBean.getSystemLoadAverage() / OperatingSystemMXBean.getAvailableProcessors()
(CPU あたりの負荷平均)OperatingSystemMXBean.getTotalPhysicalMemorySize()
そしてOperatingSystemMXBean.getFreePhysicalMemorySize()
File.getTotalSpace()
およびFile.getUsableSpace()
制限:
getSystemLoadAverage()
メソッドを照会し、ディスクスペースまた、Java 6の下でのみ使用可能であり、いくつかのJMX機能は、(それがあることが報告されています。すなわち、すべてのプラットフォームに利用できない場合がgetSystemLoadAverage()
-1を返すWindowsの場合)。
もともとGPLの下でライセンスされていましたが、Apache 2.0に変更されました。これは一般に、クローズドソースの商用製品に使用できます。
この投稿で私が述べたことに沿って。SIGAR APIの使用をお勧めします。私は自分のアプリケーションの1つでSIGAR APIを使用しています。あなたはそれが安定していて、よくサポートされており、便利な例がたくさんあることがわかります。これは、 GPL 2 Apache 2.0ライセンスのオープンソース です。見てみな。あなたのニーズに応えられると思います。
JavaとSigar APIを使用すると、メモリ、CPU、ディスク、負荷平均、ネットワークインターフェース情報とメトリック、プロセステーブル情報、ルート情報などを取得できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加