0

Java Sigar API ( http://support.hyperic.com/display/SIGAR/Home ) をダウンロードしました。これを使用して、実行中のさまざまなプロセスに関するメモリ使用量の情報を取得したいと考えています。

eclipse.exe のメモリ使用量を報告するために、次のテスト ケースを作成しました。

import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.ptql.ProcessFinder;

public class SigarTest {
    public static void main(String[] args) throws SigarException {
        Sigar sigar = new Sigar();
        ProcessFinder find = new ProcessFinder(sigar);
        long pid = find.findSingleProcess("Exe.Name.ct=eclipse.exe");
        System.out.println(sigar.getProcMem(pid));
    }
}

このコードを実行すると、次のように出力されます。

{PageFaults=3017940, Size=4125868032, Resident=608493568}

ただし、Windows リソース モニターを見ると、eclipse.exe の次の統計が表示されます。

Commit (KB): 689,356
Working Set (KB): 594,028
Shareable (KB): 47,332
Private (KB): 546,696

次のスクリーンショットを参照してください。

ここに画像の説明を入力

Sigar によって報告された 4.1GB のメモリ使用量は、Resource Monitor によって報告されたメモリ統計のいずれにも近くありません。

なぜこれらは遠く離れているのですか?

4

1 に答える 1

1

私は自分自身の質問に対する答えを見つけたと信じています。Sigar は、仮想サイズ (リソース モニターには含まれない統計) を報告しています。仮想サイズとコミット サイズの違いの説明は、次の場所にあります: Windows - コミット サイズと仮想サイズ

于 2016-08-16T18:26:06.837 に答える