本文共 2396 字,大约阅读时间需要 7 分钟。
这里给出一个通常的Java代码示例如下:
public class GetJvmInfo { public static void main(String[] args) { MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean(); MemoryUsage usage = memoryMXBean.getHeapMemoryUsage(); System.out.println("INT HEAP:" + usage.getInit()/1024/1024 + "Mb"); System.out.println("MAX HEAP:" + usage.getMax()/1024/1024 + "Mb"); System.out.println("USED HEAP:" + usage.getUsed()/1024/1024 + "Mb"); System.out.println("\nFull Information:"); System.out.println("Heap Memory Usage:" + memoryMXBean.getHeapMemoryUsage()); System.out.println("Non-Heap Memory Usage:" + memoryMXBean.getNonHeapMemoryUsage()); ListinputArguments = ManagementFactory.getRuntimeMXBean().getInputArguments(); System.out.println("=====================java options=================="); System.out.println(inputArguments); System.out.println("=====================通过java来获取相关系统状态===================="); long i = Runtime.getRuntime().totalMemory()/1024/1024;//Java 虚拟机中的内存总量,以字节为单位 System.out.println("总的内存量为:" + i + "Mb"); long j = Runtime.getRuntime().freeMemory()/1024/1024;//Java 虚拟机中的空闲内存量 System.out.println("空闲内存量:" + j + "Mb"); long k = Runtime.getRuntime().maxMemory()/1024/1024; System.out.println("最大可用内存量:" + k + "Mb"); }}
输出效果如下:
INT HEAP:192Mb
MAX HEAP:2713Mb
USED HEAP:2Mb
Full Information:
HeapMemory Usage:init = 201326592(196608K) used =3020112(2949K) committed = 192937984(188416K) max = 2844786688(2778112K)
Non-HeapMemory Usage:init = 2555904(2496K) used = 4103240(4007K)committed = 8060928(7872K) max = -1(-1K)
=====================java options==================
[-Dfile.encoding=UTF-8]
=====================通过java来获取相关系统状态====================
总的内存量为:184Mb
空闲内存量:181Mb
最大可用内存量:2713Mb
分析:可以看到初始申请分配的堆大小为192M,但是最大的堆可以达到2713Mb(之所以,最大的堆大小可以大于初始申请分配的堆的大小,是因为没有设置该进程中最大的堆分配大小,可以允许动态增加到此时内存允许最大的堆大小)。很明显已用的堆大小为2Mb。
可以看到:Heap Memory Usage:中的信息是和我们前面分别计算出来的值是一致的。因此,如果只是显示的话,可以直接使用:
System.out.println("\nFull Information:");System.out.println("Heap Memory Usage:" + memoryMXBean.getHeapMemoryUsage());System.out.println("Non-Heap Memory Usage:" + memoryMXBean.getNonHeapMemoryUsage());
既可以看到堆的使用情况,又可以非堆的使用情况。
另外,这个命令也是不错的:
ManagementFactory.getRuntimeMXBean().getInputArguments()
可以看到你对JVM的设置情况。
当然,还可以通过Runtime中的相关参数来查看。转载地址:http://oqomi.baihongyu.com/