官网API:
https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html
@Test
public void test2() throws Exception {
// 1.getRuntime: 获取Runtime实例
Runtime rt = Runtime.getRuntime();
/*
* 2.addShutdownHook:
* 当程序出现宕机,System.exit(),正常退出等场景时一些状态没有被正确保存,使用此方法JVM会在关闭时来完成正确保存,注:
* 在使用kill pid 时程序不会被执行
*/
Thread thread = new Thread(new Runnable() {
public void run() {
System.out.println("线程A");
};
});
rt.addShutdownHook(thread);
// 3.availableProcessors: 返回Java虚拟机可用的处理器数
int availableProcessors = rt.availableProcessors();
System.out.println("Java虚拟机可用的处理器数:" + availableProcessors);
// 4.exec: 执行windows应用程序
Process exec = rt.exec("javac");
// 4.1 Process()
// waitFor = exec.waitFor();// 程序等待或指定时间,返回子进程的退出值
// exec.getErrorStream();// 返回连接到子进程的错误输出的输入流。
// exec.getInputStream();// 返回连接到子进程正常输出的输入流。
// exec.getOutputStream();// 返回连接到子进程的正常输入的输出流。
// exec.isAlive();// 测试由此表示的子进程是否Process存活。
// exec.exitValue();// 返回子进程的退出值
// exec.waitFor();// 如果需要,使当前线程等待,直到此Process对象表示的进程终止,或指定时间结束进程。
long freeMemory = rt.freeMemory();// 返回虚拟机中可用的内存量,已经占用的内存剩余量
System.out.println("内存剩余量:" + freeMemory);
rt.gc();// 运行垃圾收集器,通知垃圾收集器手机不再使用的程序
// rt.halt(0);//强制终止当前运行的Java虚拟机。
// rt.exit(0);// 通过启动其关闭序列来终止当前运行的Java虚拟机,state = 0和1是正常和强制退出
long maxMemory = rt.maxMemory();// 返回Java虚拟机将尝试使用的最大内存量。
System.out.println("虚拟机最大使用内存量:" + maxMemory);
rt.removeShutdownHook(thread);// 取消注册先前注册的虚拟机关闭挂钩。
rt.totalMemory();// 返回Java虚拟机中的内存总量。
rt.traceInstructions(false);// 启用/禁用跟踪指令。
rt.traceMethodCalls(false);// 启用/禁用方法调用的跟踪。
rt.runFinalization();// 运行待完成的任何对象的终结方法
}