com.xiongyingqi.common.utils.memory.MemoryUtils Maven / Gradle / Ivy
The newest version!
package com.xiongyingqi.common.utils.memory;
import com.xiongyingqi.common.utils.ByteUnit;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryPoolMXBean;
import java.lang.management.MemoryUsage;
import java.util.List;
/**
* @author xiongyingqi
* @since 2017/11/5
*/
public class MemoryUtils {
public static void printMemory() {
Runtime run = Runtime.getRuntime();
long max = run.maxMemory();
long total = run.totalMemory();
long free = run.freeMemory();
long usable = max - total + free;
System.out.println("------------------------------------------");
System.out.println("MaxMemory: " + ByteUnit.readSize(max));
System.out.println("FreeMemory: " + ByteUnit.readSize(free));
System.out.println("TotalMemory: " + ByteUnit.readSize(total));
System.out.println("Usable: " + ByteUnit.readSize(usable));
}
public static void printGarbage() {
List memoryPoolMXBeans = ManagementFactory.getMemoryPoolMXBeans();
for (MemoryPoolMXBean memoryPoolMXBean : memoryPoolMXBeans) {
MemoryUsage peakUsage = memoryPoolMXBean.getPeakUsage();
MemoryUsage collectionUsage = memoryPoolMXBean.getCollectionUsage();
System.out.println("------------------------------------------");
System.out.println("Name: " + memoryPoolMXBean.getName());
try {
System.out.println("CollectionUsage: " + buildMemoryUsageString(collectionUsage));
} catch (Exception e) {
}
try {
System.out.println("CollectionUsageThreshold: " + memoryPoolMXBean
.getCollectionUsageThreshold());
} catch (Exception e) {
}
try {
System.out.println("CollectionUsageThresholdCount: " + memoryPoolMXBean
.getCollectionUsageThresholdCount());
} catch (Exception e) {
}
try {
System.out.println("PeakUsage: " + buildMemoryUsageString(peakUsage));
} catch (Exception e) {
}
}
List garbageCollectorMXBeans = ManagementFactory
.getGarbageCollectorMXBeans();
for (GarbageCollectorMXBean garbageCollectorMXBean : garbageCollectorMXBeans) {
System.out.println("------------------------------------------");
System.out.println(garbageCollectorMXBean.getName());
System.out.println("CollectionCount: " + garbageCollectorMXBean.getCollectionCount());
System.out.println("CollectionTime: " + garbageCollectorMXBean.getCollectionTime() + "ms");
}
}
private static String buildMemoryUsageString(MemoryUsage memoryUsage) {
StringBuffer buf = new StringBuffer();
buf.append("init = " + memoryUsage.getInit() + "(" + ByteUnit.readSize(memoryUsage.getInit()) + ") ");
buf.append("used = " + memoryUsage.getUsed() + "(" + ByteUnit.readSize(memoryUsage.getUsed()) + ") ");
buf.append("committed = " + memoryUsage.getCommitted() + "(" +
ByteUnit.readSize(memoryUsage.getCommitted()) + ") ");
buf.append("max = " + memoryUsage.getMax() + "(" + ByteUnit.readSize(memoryUsage.getMax()) + ")");
return buf.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy