java.lang.manament API 简介

2023-10-28

java.lang.management 包提供管理接口用于监控以及管理 JVM 以及 Java 运行时的其他组件。我们开发的 JVM Agent 就是通过这个包提供的接口,收集到 JVM 中包括内存、GC、线程在内的信息。java.lang.management 包提供了以下的接口:

  • BufferPoolMXBean:bufferPool 管理接口,例如:直接缓冲池、映射缓冲池
  • ClassLoadingMXBean:JVM 的类加载系统管理接口
  • CompilationMXBean:JVM 编译系统管理接口
  • GarbageCollectionMXBean:JVM GC 管理接口,提供不同垃圾回收器的回收次数和耗时信息
  • MemoryManagerMXBean:内存管理器接口,内存管理器负责管理各个分区的内存,包括了我们常说的垃圾回收器
  • MemoryMXBean:JVM 内存系统管理接口,提供获取堆内存以及非堆内存信息
  • MemoryPoolMXBean:内存池管理接口,内存池也就是我们常说的 Java 内存分代分区,如:新生代、老年代、永生代等等
  • OperatingSystemMXBean:提供 JVM 所运行的操作系统信息
  • RuntimeMXBean:提供 JVM 运行时系统信息
  • ThreadMXBean:JVM 线程管理接口,提供 JVM 线程的相关信息

各个 MXBean 提供的具体数据获取接口,可以查看官方文档进一步了解。

下面以 MemoryMXBean 为例,其提供了主要接口获取内存信息:

  • MemoryUsage getHeapMemoryUsage()
  • MemoryUsage getNonHeapMemoryUsage()

上面两个接口将返回当前堆或非堆的内存使用信息,这些信息封装在 MemoryUsage 对象中。MemoryUsage 对象提供了内存的四个属性,分别是:init、used、committed、max,表示当前堆或非堆内存的:初始化内存大小,已使用内存大小,已提交内存大小,最大内存大小,单位为字节数。

通过以上的属性,我们就可以清晰的了解到内存的详细使用情况,对于 JVM 的其他监控指标同理。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.lang.manament API 简介 的相关文章

随机推荐