Java Runtime类的用法(附带实例)
Java 提供了 Runtime 类来表示运行环境,每个 Java 程序启动后都有唯一的运行环境,即一个 Runtime 实例,通过该实例可以获取运行时的一些状态信息或者执行一些操作。
Runtime 类提供了获取 JVM 内存信息和处理器数的相关方法,例如:
Runtime 类能让我们执行操作系统中的命令或者可执行文件。
下半部分则演示了如何在 Java 中通过“cmd.exe”可执行文件读取“JAVA_HOME”环境变量的值,主要关注“Runtime.getRuntime().exec("cmd.exe /c echo %JAVA_HOME%")”,它表示用“echo %JAVA_HOME%”作为参数传给“cmd.exe”执行并得到结果。
输出结果为:
Runtime 类提供了获取 JVM 内存信息和处理器数的相关方法,例如:
public class RuntimeTest { public static void main(String[] args) { Runtime runtime = Runtime.getRuntime(); int processors = runtime.availableProcessors(); long freeMemory = runtime.freeMemory(); long maxMemory = runtime.maxMemory(); long totalMemory = runtime.totalMemory(); System.out.println("JVM处理器数:" + processors); System.out.println("JVM空闲内存:" + freeMemory / 1024 / 1024 + "M"); System.out.println("JVM总内存:" + totalMemory / 1024 / 1024 + "M"); System.out.println("JVM最大内存:" + maxMemory / 1024 / 1024 + "M"); } }程序中获取了 4 个变量值,分别对应处理器数、空闲内存、总内存和最大内存。输出结果为:
JVM处理器数:8
JVM空闲内存:252M
JVM总内存:254M
JVM最大内存:4054M
Runtime 类能让我们执行操作系统中的命令或者可执行文件。
public class RuntimeTest2 { public static void main(String[] args) throws IOException { Process process = Runtime.getRuntime().exec("dir"); InputStream fis = process.getInputStream(); InputStreamReader isr = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr); String line; System.out.println("dir 命令输出:"); while ((line = br.readLine()) != null) { System.out.println(line); } process = Runtime.getRuntime().exec("cmd.exe /c echo %JAVA_HOME%"); fis = process.getInputStream(); isr = new InputStreamReader(fis); br = new BufferedReader(isr); System.out.println("cmd窗口打印%JAVA_HOME%:"); while ((line = br.readLine()) != null) { System.out.println(line); } } }程序上半部分主要关注“Runtime.getRuntime().exec("dir")”,它表示在命令窗口执行“dir”命令,对于接着的若干行代码我们先不用深入理解,只要知道它们是用来读取执行后的结果。
下半部分则演示了如何在 Java 中通过“cmd.exe”可执行文件读取“JAVA_HOME”环境变量的值,主要关注“Runtime.getRuntime().exec("cmd.exe /c echo %JAVA_HOME%")”,它表示用“echo %JAVA_HOME%”作为参数传给“cmd.exe”执行并得到结果。
输出结果为:
dir 命令输出:
bin src test.txt tmp.o
cmd窗口打印%JAVA_HOME%:
C:\Program Files\Java\jdk-11.0.2