X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.nativemem%2Fsrc%2Forg%2Fsimantics%2Fnativemem%2FProcessMemoryCounters.java;fp=bundles%2Forg.simantics.nativemem%2Fsrc%2Forg%2Fsimantics%2Fnativemem%2FProcessMemoryCounters.java;h=d2192d3c484d09ab6abd89ac9a5efa6e00f22c61;hb=2531cdf245f42bce854d43f4d49a23983c79db96;hp=0000000000000000000000000000000000000000;hpb=857dbc869796d772864327ce02f19dc252b159fc;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.nativemem/src/org/simantics/nativemem/ProcessMemoryCounters.java b/bundles/org.simantics.nativemem/src/org/simantics/nativemem/ProcessMemoryCounters.java new file mode 100644 index 000000000..d2192d3c4 --- /dev/null +++ b/bundles/org.simantics.nativemem/src/org/simantics/nativemem/ProcessMemoryCounters.java @@ -0,0 +1,54 @@ +package org.simantics.nativemem; + +/** + * Architecture-independent version of the Windows PsApi PROCESS_MEMORY_COUNTERS + * structure. + * + * @author Tuukka Lehtonen + */ +public class ProcessMemoryCounters { + public int PageFaultCount; + public long PeakWorkingSetSize; + public long WorkingSetSize; + public long QuotaPeakPagedPoolUsage; + public long QuotaPagedPoolUsage; + public long QuotaPeakNonPagedPoolUsage; + public long QuotaNonPagedPoolUsage; + public long PagefileUsage; + public long PeakPagefileUsage; + public long PrivateUsage; + + @Override + public String toString() { + return "ProcessMemoryCounters [PageFaultCount=" + + PageFaultCount + ", PeakWorkingSetSize=" + PeakWorkingSetSize + + ", WorkingSetSize=" + WorkingSetSize + + ", QuotaPeakPagedPoolUsage=" + QuotaPeakPagedPoolUsage + + ", QuotaPagedPoolUsage=" + QuotaPagedPoolUsage + + ", QuotaPeakNonPagedPoolUsage=" + QuotaPeakNonPagedPoolUsage + + ", QuotaNonPagedPoolUsage=" + QuotaNonPagedPoolUsage + + ", PagefileUsage=" + PagefileUsage + ", PeakPagefileUsage=" + + PeakPagefileUsage + ", PrivateUsage=" + PrivateUsage + "]"; + } + + public String toHumanReadableString() { + StringBuilder sb = new StringBuilder(); + sb.append("ProcessMemoryCounters [\n\tPageFaultCount = ").append(PageFaultCount) + .append(",\n\tPeakWorkingSetSize = ").append(toMb(PeakWorkingSetSize)) + .append(" MB,\n\tWorkingSetSize = ").append(toMb(WorkingSetSize)) + .append(" MB,\n\tQuotaPeakPagedPoolUsage = ").append(toMb(QuotaPeakPagedPoolUsage)) + .append(" MB,\n\tQuotaPagedPoolUsage = ").append(toMb(QuotaPagedPoolUsage)) + .append(" MB,\n\tQuotaPeakNonPagedPoolUsage = ").append(toMb(QuotaPeakNonPagedPoolUsage)) + .append(" MB,\n\tQuotaNonPagedPoolUsage = ").append(toMb(QuotaNonPagedPoolUsage)) + .append(" MB,\n\tPagefileUsage = ").append(toMb(PagefileUsage)) + .append(" MB,\n\tPeakPagefileUsage = ").append(toMb(PeakPagefileUsage)) + .append(" MB,\n\tPrivateUsage = ").append(toMb(PrivateUsage)) + .append(" MB]"); + return sb.toString(); + } + + private double toMb(long bytes) { + return (double) bytes / 1048576.0; + } + +} \ No newline at end of file