もしそうなら、どうやって?学校でチームプロジェクトをやっています。Java は実際にはハードウェアに直接アクセスできないと思っていました。これを知る必要があるのは、簡単なグーグル検索を行った後、何も見つからず、私のチーム メンバー (これを行い、Java を使用したいと考えている) は、どうすればよいかわからないように見えるからです。やった。
4 に答える
あなたが探しているのはSIGARAPIです
概要
Sigar APIは、次のようなシステム情報を収集するためのポータブルインターフェイスを提供します。
- システムメモリ、スワップ、cpu、負荷平均、稼働時間、ログイン
- プロセスごとのメモリ、CPU、クレデンシャル情報、状態、引数、環境、開いているファイル
- ファイルシステムの検出とメトリック
- ネットワークインターフェイスの検出、構成情報、およびメトリック
- TCPおよびUDP接続テーブルネットワークルートテーブル
この情報はほとんどのオペレーティングシステムで利用できますが、各OSには独自の方法で情報を提供します。SIGARは、基盤となるプラットフォームに関係なく、この情報にアクセスするための1つのAPIを開発者に提供します。コアAPIは、Java、Perl、Ruby、Python、Erlang、PHP、およびC#用に現在実装されているバインディングを使用して純粋なCで実装されています。
サンドボックス環境、つまりJava仮想マシン(JVM)で実行されるため、Javaから直接ハードウェアにアクセスできないというあなたの権利(ネイティブコードでの呼び出しを除きますが、それはあなたの後ではありません)。
ただし、基盤となる OS から収集する JVM からいくつかの基本的な情報を取得できます。Java を使用して OS レベルのシステム情報を取得する方法をご覧ください。
ネイティブ Java API を使用して取得できる情報の量はごくわずかです。これは、プログラムは通常、自分が置かれている VM についてしか認識していないためです。
ただし、コマンド ラインを呼び出し、ネイティブ アプリを実行し、結果を解析することはできます。ただし、言語に通常関連付けられているクロスプラットフォームの利点が失われるため、Java アプリでは特に良い形式ではありません。
System.getEnv()を使用して、プロセッサに関する基本的な情報を取得できます。
また、 Runtime.getRuntime()を使用することもできます。詳細については、R. Kettelerij の応答を参照してください。
別のオプションは、JMXを使用することです。たとえば、MemoryMXBeanは、RAM の使用状況 (ヒープと非ヒープ) に関する情報を提供します。