All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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