Runtime类梳理

Runtime 是单例类

一般可以读取 CPU、内存信息

退出JVM

触发GC

注册钩子

CPU相关

public native int availableProcessors();

内核与逻辑处理器:

1个内核 可以包含2个逻辑处理器, 通常所说的 4核 、8核 都是指 逻辑处理器

一般这个方法,对于 线程池 设置 核心线程数和最大线程数时 使用;或者其他需要根据cpu数量来设置 资源 量时 使用。

内存相关

可以获取JVM内存信息:初始内存,最大内存,当前可用内存,单位 bytes

        /**
         * JVM最大内存,由 -Xmx 设置
         */
        Runtime.getRuntime().maxMemory();

        /**
         * JVM初始最大内存,由 -Xms 设置
         */
        Runtime.getRuntime().totalMemory();

        /**
         * JVM当前可用内存
         */
        Runtime.getRuntime().freeMemory();

注册/删除JVM钩子

public void addShutdownHook(Thread hook) {
        SecurityManager sm = System.getSecurityManager();
        if (sm != null) {
            sm.checkPermission(new RuntimePermission("shutdownHooks"));
        }
        ApplicationShutdownHooks.add(hook);
    }


public boolean removeShutdownHook(Thread hook) {
        SecurityManager sm = System.getSecurityManager();
        if (sm != null) {
            sm.checkPermission(new RuntimePermission("shutdownHooks"));
        }
        return ApplicationShutdownHooks.remove(hook);
    }

退出JVM

status >=0  正常退出

status < 0 表示异常退出

public void exit(int status) {
        SecurityManager security = System.getSecurityManager();
        if (security != null) {
            security.checkExit(status);
        }
        Shutdown.exit(status);
    }

触发JVM GC

public native void gc();

加载类库

@CallerSensitive
    public void load(String filename) {
        load0(Reflection.getCallerClass(), filename);
    }

    synchronized void load0(Class<?> fromClass, String filename) {
        SecurityManager security = System.getSecurityManager();
        if (security != null) {
            security.checkLink(filename);
        }
        if (!(new File(filename).isAbsolute())) {
            throw new UnsatisfiedLinkError(
                "Expecting an absolute path of the library: " + filename);
        }
        ClassLoader.loadLibrary(fromClass, filename, true);
    }

执行cmd命令

这个一般很少使用

public Process exec(String[] cmdarray, String[] envp, File dir)
        throws IOException {
        return new ProcessBuilder(cmdarray)
            .environment(envp)
            .directory(dir)
            .start();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值