web-dev-qa-db-ja.com

Java APIは、私のJavaアプリケーションのCPUとメモリの使用量を取得します

Javaで現在のプロセスまたはアプリケーションのCPUとメモリの使用量を取得するためのAPIが必要です。

システム全体のCPU使用率を取得するためのAPIがありますが、特定のプロセスに必要です(getSystemCpuLoadインターフェイスのOperatingSystemMXBean

前もって感謝します

11
chang zang

別のOperatingSystemMXBeanを使用すると、そのデータを取得できます。

インポートされたパッケージを確認します:com.Sun.management.OperatingSystemMXBean

 import Java.lang.management.ManagementFactory;
 import com.Sun.management.OperatingSystemMXBean;

 public class Test {

 public static void main(String[] args) {
       OperatingSystemMXBean operatingSystemMXBean = 
          (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
       System.out.println(operatingSystemMXBean.getProcessCpuLoad());
 }}

https://docs.Oracle.com/javase/7/docs/jre/api/management/extension/com/Sun/management/OperatingSystemMXBean.html

私が間違っていなければ、このクラスはrt.jarに含まれており、Javaランタイムに存在します。

6
RubioRic

良い知らせと悪い知らせがあります。悪いニュースは、純粋なJavaを使用してCPU使用率をプログラムで照会することは不可能であるということです。このためのAPIはありません。推奨される代替方法では、Runtime.exec()を使用してJVMのプロセスID(PID)を判別し、psなどの外部のプラットフォーム固有のコマンドを呼び出して、対象のPIDの出力を解析します。しかし、このアプローチはせいぜい壊れやすいものです。

ただし、幸いなことに、信頼性の高いソリューションは、Javaの外に出て、Java Javaネイティブインターフェイス(JNI)。

4
P S M

Pidを取得したら、jstat -gc [insert-pid-here]を使用して、ガベージ収集されたヒープの動作の統計を見つけることができます。

jstat -gccapacity [insert-pid-here]は、メモリプールの生成とスペース機能に関する情報を表示します。

jstat -gcutil [insert-pid-here]は、各世代の使用率を容量のパーセンテージとして表示します。使用状況を一目で確認するのに便利です。

0
Mayur Jain