这个类用来表示当前虚拟机的运行环境.
程序示例:
public static Runtime getRuntime() : 当前系统的运行环境对象
// 先用上面的方法, 获取到 Runtime 这个类的一个对象,
// 再用这个对象, 调用下面的这些方法 (因为这些方法都是非静态的, 必须用对象来调用而不是类名)
public void exit(int status) : 停止虚拟机
public int availableProcessors() : 获得 CPU 的线程数
public long maxMemory() : JVM 能从系统中获取总内存大小 (单位 byte)
public long totalMemory() : JVM 已经从系统中获取总内存大小 (单位 byte)
public long freeMemory() : JVM 剩余内存大小 (单位 byte)
public Process exec(string command) : 运行 cmd 命令
这个类里面的方法不是静态的, 所以想要调用 Runtime 这个类里面的方法, 就要先获取到 Runtime 这个类的对象. 但是这个类的对象, 不能由我们自己直接 new 出来, 而是通过 getRuntime()
方法来获取.
public static Runtime getRuntime(){ } // 当前系统的运行环境对象
System 里面的 exit()
方法在底层实际上就是调用 Runtime 里面的 exit()
方法.
图1
程序示例:
public class Demo1 {
public static void main(String[] args) {
// 1. 获取 Runtime 的对象
// Runtime r1 = new Runtime(); // 'Runtime()' has private access in 'java.lang.Runtime'
// 正确的方式:
Runtime r1 = Runtime.getRuntime();
}
}
进入 Runtime 源码进行查看:
图2
这样设计代码的好处是: 在外界, 不管是在哪个类中调用 getRuntime()
方法, 获取到的都是同一个对象. Java 将 Runtime 设计为只有一个对象的原因是 Runtime 这个类表示的是当前虚拟机运行的环境, 而一台电脑只能有一个运行环境, 所以如果创建多个 Runtime 类的对象, 是没有实际意义的. 所以 Java 就规定了 Runtime 只能有一个对象, 这个对象就表示虚拟机当前的运行环境. 通过这个对象, 就能获取到当前环境的一些信息.
程序示例:
public class Demo2 {
public static void main(String[] args) {
Runtime runtime1 = Runtime.getRuntime();
Runtime runtime2 = Runtime.getRuntime();
System.out.println(runtime1 == runtime2); // true, 表示两个 Runtime 对象是同一个对象
}
}
exit()
方法:
public class Demo3 {
public static void main(String[] args) {
Runtime.getRuntime().exit(0);
System.out.println("看看这一条语句执行了吗?"); // 没有输出
}
}
availableProcessors()
方法:
public class Demo3 {
public static void main(String[] args) {
System.out.println(Runtime.getRuntime().availableProcessors()); // 20
}
}
maxMemory()
方法:
public class Demo3 {
public static void main(String[] args) {
System.out.println(Runtime.getRuntime().maxMemory() / 1024 / 1024); // 4002, 单位是 M, 也就是 4 G
}
}
totalMemory()
方法:
public class Demo3 {
public static void main(String[] args) {
System.out.println(Runtime.getRuntime().totalMemory() / 1024 / 1024); // 252
}
}
freeMemory()
方法:
public class Demo3 {
public static void main(String[] args) {
System.out.println(Runtime.getRuntime().freeMemory() / 1024 / 1024); // 249
}
}
exec()
方法:
不是所有的 cmd 命令都可以这样子执行. 比如 dir, 因为无法指定路径.
直接用 exec 会报错, 默认用第一个解决方案:
图3
import java.io.IOException;
public class Demo3 {
public static void main(String[] args) throws IOException {
Runtime.getRuntime().exec("notepad"); // 打开记事本
}
}
标签:Runtime,void,public,static,main,getRuntime From: https://www.cnblogs.com/Chengkai730/p/18542819cmd 里面的关机命令:
shutdown : 关机
加上参数才能执行
s : 默认在1分钟之后关机
s -t 指定时间 : 指定关机时间, 单位是秒
-a : 取消关机操
-r : 关机并重启