java.lang.Runtime 类:每个 java 程序在运行时相当于启动了一个 JVM 进程,每个 JVM 进程对应于一个 Runtime 实例,此实例由 JVM 负责实例化,只能通过 getRuntime() 获取当前运行的 Runtime 对象的引用
- 获得了当前的 Runtime 的对象的引用,就可以调用 Runtime 对象的方法来查看虚拟机的状态或控制虚拟机的行为
- 在源码中,使用了饿汉式单例模式通过 getRuntime() 获取的为同一个 Runtime 对象
获取 JVM 状态
Runtime 提供了 4 个 native 方法:
- public native int availableProcessors():获取 JVM 内核数
- public native long freeMemory():获取空闲内存
- public native long totalMemory():获取总内存
public native long maxMemory():获取最大内存
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime();
System.out.println(runtime.availableProcessors());
System.out.println(runtime.freeMemory());
System.out.println(runtime.maxMemory());
System.out.println(runtime.totalMemory());
}
执行本地程序
Runtime 通过如下方法执行本地程序,如在 win 下运行 exe :
- Process exec(String command):在单独的进程中执行指定的字符串命令
- Process exec(String[] cmdArray):在单独的进程中执行指定命令和变量
- Process exec(Stringcommand, String[] envp):在指定环境的独立进程中执行指定命令和变量
- Process exec(String[] cmdArray, String[] envp):在指定环境的独立进程中执行指定的命令和变量
- Process exec(String command,String[] envp,File dir):在有指定环境和工作目录的独立进程中执行指定的字符串命令
- Process exec(String[] cmdarray,String[] envp,File dir):在指定环境和工作目录的独立进程中执行指定的命令和变量
java.lang.Progress 提供的方法:
- destroy():杀掉子进程
- exitValue():返回子进程的出口值,值 0 表示正常终止
- getErrorStream():获取子进程的错误流
- getInputStream():获取子进程的输入流
- getOutputStream():获取子进程的输出流
- waitFor():导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程,根据惯例,0 表示正常终止
加载动态链接库
Runtime.load() 方法可以加载动态链接库,如linux的so文件,win下的dll文件等
系统关闭
Runtime.exit(int status):退出 JVM 方法
- 0:代表正常退出
- 非0:代表异常退出