1 package org.simantics.nativemem.internal;
3 import java.util.Arrays;
6 import org.simantics.nativemem.ProcessMemoryCounters;
8 import com.sun.jna.Native;
9 import com.sun.jna.Structure;
10 import com.sun.jna.platform.win32.WinNT.HANDLE;
11 import com.sun.jna.win32.StdCallLibrary;
13 public interface Psapi64 extends StdCallLibrary {
15 Psapi64 INSTANCE = (Psapi64) Native.loadLibrary("Psapi", Psapi64.class);
18 * https://msdn.microsoft.com/en-us/library/windows/desktop/ms684874%28v=vs.85%29.aspx
20 public static class PROCESS_MEMORY_COUNTERS_EX extends Structure {
22 public int PageFaultCount;
23 public long PeakWorkingSetSize;
24 public long WorkingSetSize;
25 public long QuotaPeakPagedPoolUsage;
26 public long QuotaPagedPoolUsage;
27 public long QuotaPeakNonPagedPoolUsage;
28 public long QuotaNonPagedPoolUsage;
29 public long PagefileUsage;
30 public long PeakPagefileUsage;
31 public long PrivateUsage;
33 @SuppressWarnings("rawtypes")
35 protected List getFieldOrder() {
36 return PROCESS_MEMORY_COUNTERS_EX_FIELDS;
39 private static final List<String> PROCESS_MEMORY_COUNTERS_EX_FIELDS = Arrays.asList(new String[] {
40 "cb", "PageFaultCount",
41 "PeakWorkingSetSize", "WorkingSetSize",
42 "QuotaPeakPagedPoolUsage", "QuotaPagedPoolUsage",
43 "QuotaPeakNonPagedPoolUsage", "QuotaNonPagedPoolUsage",
44 "PagefileUsage", "PeakPagefileUsage", "PrivateUsage"
47 public void writeTo(ProcessMemoryCounters to) {
48 to.PageFaultCount = PageFaultCount;
49 to.PeakWorkingSetSize = PeakWorkingSetSize;
50 to.WorkingSetSize = WorkingSetSize;
51 to.QuotaPeakPagedPoolUsage = QuotaPeakPagedPoolUsage;
52 to.QuotaPagedPoolUsage = QuotaPagedPoolUsage;
53 to.QuotaPeakNonPagedPoolUsage = QuotaPeakNonPagedPoolUsage;
54 to.QuotaNonPagedPoolUsage = QuotaNonPagedPoolUsage;
55 to.PagefileUsage = PagefileUsage;
56 to.PeakPagefileUsage = PeakPagefileUsage;
57 to.PrivateUsage = PrivateUsage;
62 * https://msdn.microsoft.com/en-us/library/windows/desktop/ms683219%28v=vs.85%29.aspx
64 boolean GetProcessMemoryInfo(HANDLE Process, PROCESS_MEMORY_COUNTERS_EX ppsmemCounters, int cb);