如何实时监控 Java 程序的内存信息(spring boot actuator原理)
在 Spring boot 框架中引入 actuator 就能实现程序的部分功能和性能,以及运行情况的监控。那么 actuator 的监控原理是什么呢?非 Spring Boot 程序如何实现内存等信息的监控呢?本文告诉你如何实现这些功能。
actuator 的监控指标其实就是 Java 程序的内存等信息,这些都可以使用 Java 的 api 获取到。那么 Java 的内存信息是如何被监控的呢?答案就是 Runtime.getRuntime() 提供的几个方法。
- Runtime.getRuntime().maxMemory(); //最大可用内存,对应-Xmx
- Runtime.getRuntime().freeMemory(); //当前JVM空闲内存
- Runtime.getRuntime().totalMemory(); //当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和
关于maxMemory(),freeMemory()和totalMemory():
- maxMemory()为JVM的最大可用内存,可通过-Xmx设置,默认值为物理内存的1/4,设置不能高于计算机物理内存;
- totalMemory()为当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和,会随着JVM使用内存的增加而增加;
- freeMemory()为当前JVM空闲内存,因为JVM只有在需要内存时才占用物理内存使用,所以freeMemory()的值一般情况下都很小,而JVM实际可用内存并不等于freeMemory(),而应该等于maxMemory()-totalMemory()+freeMemory()。
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2021/05/17 02:49