java获取jvm内存信息 java获取jvm运行信息 java获取jvm运行信息

发布时间:2024年01月19日

java获取jvm内存信息 java获取jvm运行信息 java获取jvm运行信息

1、创建需要使用的工具类

文件名 ByteConverter.java 用于将字节数值转为 MB数值


import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * <h2>字节数值转换</h2>
 * <p>
 *
 * </p>
 *
 * @author 
 * @since 
 **/
public class ByteConverter {
    /**
     * 将字节数量转换为MB
     *
     * @param bytes 字节数量
     * @return 对应的MB
     */
    public static BigDecimal bytesToMB(double bytes) {
    	BigDecimal bytesConver = BigDecimal.valueOf(bytes);
    	// 字节数量转换MB = 字节数 / (1024 * 1024)
    	BigDecimal conditions = BigDecimal.valueOf(1048576L);
        return bytesConver.divide(conditions, 2, RoundingMode.HALF_UP);
    }

}

2、创建一个 jvm信息对象类

import java.math.BigDecimal;
import java.math.RoundingMode;
import cn.hutool.core.lang.Singleton;


/**
 * <h2>JVM运行信息</h2>
 * <p>
 *
 * </p>
 *
 * @author 
 * @since 
 **/
public class JvmInfo {
	/**
	 * 单例模式,使用 hutool工具,也可以自己实现,也可以直接不用单例模式 直接new
	 */
	private static JvmInfo info = Singleton.get(JvmInfo.class);
	
	/**
	 * JVM已用内存
	 */
	private BigDecimal usedMemory;
	/**
	 * JVM最大可用内存
	 */
	private BigDecimal maxMemory;
	/**
	 * JVM剩余内存
	 */
	private BigDecimal freeMemory;
	/**
	 * jdk安装路径
	 */
	private String jdkHome;
	/**
	 * jdk版本
	 */
	private String jdkVersion;
	/**
	 * JVM内存使用率
	 */
	private BigDecimal usage;
	
	private JvmInfo(){}
	
	public static JvmInfo getInstans() {
		Runtime runtime = Runtime.getRuntime();
		info.setUsedMemory(ByteConverter.bytesToMB(runtime.totalMemory() - runtime.freeMemory()));
		info.setMaxMemory(ByteConverter.bytesToMB(Runtime.getRuntime().maxMemory()));
		info.setFreeMemory(ByteConverter.bytesToMB(Runtime.getRuntime().freeMemory()));
		info.setUsage(info.getUsedMemory().divide(info.getMaxMemory(), 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
		info.setJdkVersion(System.getProperty("java.version"));
		info.setJdkHome(System.getProperty("java.home"));
		return info;
	}
	
	
	
	public String getJdkVersion() {
		return jdkVersion;
	}
	
	public void setJdkVersion(String jdkVersion) {
		this.jdkVersion = jdkVersion;
	}
	
	public BigDecimal getUsage() {
		return usage;
	}

	public void setUsage(BigDecimal usage) {
		this.usage = usage;
	}

	public BigDecimal getUsedMemory() {
		return usedMemory;
	}

	public void setUsedMemory(BigDecimal usedMemory) {
		this.usedMemory = usedMemory;
	}

	public BigDecimal getMaxMemory() {
		return maxMemory;
	}

	public void setMaxMemory(BigDecimal maxMemory) {
		this.maxMemory = maxMemory;
	}

	public BigDecimal getFreeMemory() {
		return freeMemory;
	}

	public void setFreeMemory(BigDecimal freeMemory) {
		this.freeMemory = freeMemory;
	}

	public String getJdkHome() {
		return jdkHome;
	}

	public void setJdkHome(String jdkHome) {
		this.jdkHome = jdkHome;
	}
}

3、使用

	public static void main(String[] args) {
		System.out.printf("JVM运行信息:%s", JvmInfo.getInstans());
	}
文章来源:https://blog.csdn.net/qq_40739917/article/details/135700013
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。