package test;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
import java.math.BigDecimal;
import java.util.logging.Logger;
/**
* @author LimingWang
* @date 2015年5月26日 上午11:44:46
* @version 1.0
*/
public class JVMTest {
private static Logger logger = Logger.getLogger("JVMTest");
public static void main(String[] args) {
MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
MemoryUsage nonHeapMemoryUsage = memoryMXBean.getNonHeapMemoryUsage();
MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage();
double nonheapUsage = divide(nonHeapMemoryUsage);
double heapUsage = divide(heapMemoryUsage);
logger.info("nonHeapMemoryUsage:" + nonheapUsage + "Mb heapUsage:" + heapUsage + "Mb");
logger.info("MemoryUse:" + add(nonheapUsage, heapUsage) + "Mb");
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
logger.info(String.valueOf(i));
}
}
});
nonHeapMemoryUsage = memoryMXBean.getNonHeapMemoryUsage();
heapMemoryUsage = memoryMXBean.getHeapMemoryUsage();
nonheapUsage = divide(nonHeapMemoryUsage);
heapUsage = divide(heapMemoryUsage);
logger.info("nonHeapMemoryUsage:" + nonheapUsage + "Mb heapUsage:" + heapUsage + "Mb");
logger.info("MemoryUse:" + add(nonheapUsage, heapUsage) + "Mb");
}
private static double divide(MemoryUsage nonHeapMemoryUsage) {
BigDecimal b1 = new BigDecimal(nonHeapMemoryUsage.getUsed());
BigDecimal b2 = new BigDecimal(1024 * 1024);
return b1.divide(b2, 4, BigDecimal.ROUND_HALF_UP).doubleValue();
}
private static double add(double nonHeapMemoryUsage, double heapMemoryUsage) {
BigDecimal b1 = new BigDecimal(nonHeapMemoryUsage);
BigDecimal b2 = new BigDecimal(heapMemoryUsage);
return b1.add(b2).doubleValue();
}
}
Java获取内存使用信息
最新推荐文章于 2023-01-14 19:25:02 发布