Java获取内存使用信息

来源:互联网 发布:php如何做面包屑 编辑:程序博客网 时间:2024/06/14 03:08
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() {@Overridepublic 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();}}

0 0