JAVA系统环境相关

整理了下系统环境相关的一个工具类,
首先需要引入jar包

<dependency>
    <groupId>org.fusesource</groupId>
    <artifactId>sigar</artifactId>
    <version>1.6.4</version>
</dependency>

代码如下:

import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.List;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;

/**
 * 系统环境相关
 */
public class Demo {


    public static final String java_version = "java.version"; // Java的运行环境版本
    public static final String java_vendo = "java.vendor"; // Java的运行环境供应商
    public static final String java_vendo_url = "java.vendor.url"; // Java供应商的URL
    public static final String java_home = "java.home"; // Java的安装路径
    public static final String java_vm_specification_version = "java.vm.specification.version"; // Java的虚拟机规范版本
    public static final String java_vm_specification_vendor = "java.vm.specification.vendor"; // Java的虚拟机规范供应商
    public static final String java_vm_specification_name = "java.vm.specification.name"; // Java的虚拟机规范名称
    public static final String java_vm_version = "java.vm.version"; // Java的虚拟机实现版本
    public static final String java_vm_vendor = "java.vm.vendor"; // Java的虚拟机实现供应商
    public static final String java_vm_name = "java.vm.name"; // Java的虚拟机实现名称
    public static final String java_specification_version = "java.specification.version"; // Java运行时环境规范版本
    public static final String java_specification_vender = "java.specification.vender"; // Java运行时环境规范供应商
    public static final String java_specification_name = "java.specification.name"; // Java运行时环境规范名称
    public static final String java_class_version = "java.class.version"; // Java的类格式版本号
    public static final String java_class_path = "java.class.path"; // Java的类路径
    public static final String java_library_path = "java.library.path"; // 加载库时搜索的路径列表
    public static final String java_io_tmpdir = "java.io.tmpdir"; // 默认的临时文件路径
    public static final String java_ext_dirs = "java.ext.dirs"; // 一个或多个扩展目录的路径
    public static final String os_name = "os.name"; // 操作系统的名称
    public static final String os_arch = "os.arch"; // 操作系统的构架
    public static final String os_version = "os.version"; // 操作系统的版本
    public static final String file_separator = "file.separator"; // 文件分隔符
    public static final String path_separator = "path.separator"; // 路径分隔符
    public static final String line_separator = "line.separator"; // 行分隔符
    public static final String user_name = "user.name"; // 用户的账户名称
    public static final String user_home = "user.home"; // 用户的主目录
    public static final String user_dir = "user.dir"; //  用户的当前工作目录

    // 系统bean
    private static final OperatingSystemMXBean osmxb;
    private static final List<GarbageCollectorMXBean> list;
    private static Sigar sigar = new Sigar();

    // K转换M
    private static final long K2M = 1024l * 1024l;

    static {
        osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
        list = ManagementFactory.getGarbageCollectorMXBeans();
    }

    /**
     * 获取java系统环境变量
     * @param key
     * @return
     */
    public static String getOsSystemProperty(String key) {
        return System.getProperty(key);
    }

    /**
     * 获取本机IP
     * @return
     */
    public static String getOsLocalHostIp() {
        InetAddress addr;
        String ip = null;
        try {
            addr = InetAddress.getLocalHost();
            ip = addr.getHostAddress();// 获得本机IP
        } catch (UnknownHostException e) {
            ip = "未知";
        }
        return ip;
    }

    /**
     * 获取本机名称
     * @return
     */
    public static String getOsLocalHostName() {
        InetAddress addr;
        String name = null;
        try {
            addr = InetAddress.getLocalHost();
            name = addr.getHostName();// 获得本机名称
        } catch (UnknownHostException e) {
            name = "未知";
        }
        return name;
    }

    /**
     * 获取操作系统路径类型
     * @return
     */
    public static String getOsPathType() {
        String osPathType = System.getProperty("file.separator");
        if (osPathType.equals("\\")) {
            return "\\\\";
        }
        if (osPathType.equals("/")) {
            return "/";
        }
        return null;
    }

    /**
     * 获取操作系统类型名称
     * @return
     */
    public static String getOsName() {
        return osmxb.getName();// System.getProperty("os.name");
    }

    /**
     * 操作系统的体系结构 如:x86
     * @return
     */
    public static String getOsArch() {
        return osmxb.getArch();// System.getProperty("os.arch");
    }

    /**
     * 获取CPU数量
     * @return
     */
    public static int getOsCpuNumber() {
        return osmxb.getAvailableProcessors();// Runtime.getRuntime().availableProcessors();// 获取当前电脑CPU数量
    }

    /**
     * cpu使用率
     * @return
     */
    public static double getOscpuRatio(){
        try {
            return sigar.getCpuPerc().getCombined();
        } catch (SigarException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return 0;
        }
        //return osmxb.getSystemCpuLoad();
    }

    /**
     * 物理内存,总的可使用的,单位:M
     * @return
     */
    public static long getOsPhysicalMemory() {
        try {
            Mem memory = sigar.getMem();
            long totalMemorySize = memory.getTotal() / K2M; // M
            //long totalMemorySize = osmxb.getTotalPhysicalMemorySize() / K2M; // M
            return totalMemorySize;
        } catch (SigarException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return 0;
        }

    }

    /**
     * 物理内存,剩余,单位:M
     * @return
     */
    public static long getOsPhysicalUseMemory() {
        Mem memory;
        try {
            memory = sigar.getMem();
            long freePhysicalMemorySize = memory.getUsed() / K2M; // M
            //long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize() / K2M; // M
            return freePhysicalMemorySize;
        } catch (SigarException e) {
            e.printStackTrace();
            return 0;
        }


    }


    /**
     * 物理内存,剩余,单位:M
     * @return
     */
    public static long getOsPhysicalFreeMemory() {
        Mem memory;
        try {
            memory = sigar.getMem();
            long freePhysicalMemorySize = memory.getFree() / K2M; // M
            //long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize() / K2M; // M
            return freePhysicalMemorySize;
        } catch (SigarException e) {
            e.printStackTrace();
            return 0;
        }


    }

    /**
     * JVM内存,内存总量,单位:M
     * @return
     */
    public static long getJvmTotalMemory() {
        return Runtime.getRuntime().totalMemory() / K2M;
    }

    /**
     * JVM内存,空闲内存量,单位:M
     * @return
     */
    public static long getJvmFreeMemory() {
        return Runtime.getRuntime().freeMemory() / K2M;
    }

    /**
     * JVM内存,最大内存量,单位:M
     * @return
     */
    public static long getJvmMaxMemory() {
        return Runtime.getRuntime().maxMemory() / K2M;
    }

    /**
     * 获取JVM GC次数
     * @return
     */
    public static long getJvmGcCount() {
        long count = 0;
        for (final GarbageCollectorMXBean garbageCollectorMXBean : list) {
            count += garbageCollectorMXBean.getCollectionCount();
        }
        return count;
    }

    /**
     * 系统线程列表
     * @return
     */
    public static List<Thread> getJvmThreads() {
        int activeCount = Thread.activeCount();
        Thread[] threads = new Thread[activeCount];
        Thread.enumerate(threads);
        return java.util.Arrays.asList(threads);
    }

    public static void main(String[] args) {
        System.out.println(getOsPathType());
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值