获取内存和核心数量
Runtime runtime = Runtime.getRuntime();long freeMemory = runtime.freeMemory();long maxMemory = runtime.maxMemory();long totalMemory = runtime.totalMemory();int availableProcessors = runtime.availableProcessors();System.out.println("空闲内存:" + freeMemory / (1024 * 1024) + " M");System.out.println("最大内存:" + maxMemory / (1024 * 1024) + " M");System.out.println("总内存:" + totalMemory / (1024 * 1024) + " M");System.out.println("可用处理器数:" + availableProcessors);
运行时设定jvm参数
-Xmx256m -Xms128m
-Xmx:设置Java堆的最大内存。如 -Xmx2g 将堆的最大大小设置为2G,推荐配置为系统可用内存的70-80%
-Xms:设置Java堆的初始内存。如 -Xms2g 将堆的初始大小设置为2G,推荐配置与-Xmx的值相同,以避免堆内存动态调整的开销
运行结果
空闲内存:128 M
最大内存:228 M
总内存:159 M
可用处理器数:8
api返回的内存单位字节
freememory 虚拟机空闲内存,jvm已经拿到但是未用到的内存。
maxMemory 虚拟机申请到的最大内存。
totalMemory 虚拟机从操作系统已经拿到的内存,通常不是一次就拿到所有的内存。
availableProcessors 可用逻辑处理器数,例如4核心8线程的cpu,实际处理核心为8个逻辑处理器。