Runtime
/**
* 每一个 Java 应用程序都有一个关联的运行时对象
*
* @author unascribed
* @see java.lang.Runtime#getRuntime()
* @since 1.0
*/
public class Runtime {
/**
* 当前 JVM 的运行时对象
*/
private static final Runtime currentRuntime = new Runtime();
/**
* JavaSE 的版本
*/
private static Version version;
/**
* 获取当前 Java 应用程序的运行时对象
*/
public static Runtime getRuntime() {
return currentRuntime;
}
/**
* 终止当前运行的 Java 虚拟机,非 0 状态码表示异常退出。
*
* @param status 终止状态码
*/
public void exit(int status) {
final SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkExit(status);
}
Shutdown.exit(status);
}
/**
* 返回此 JVM 可用的逻辑处理器数量
* @since 1.4
*/
public native int availableProcessors();
/**
* 此 JVM 能使用的最大内存
* @since 1.4
*/
public native long maxMemory();
/**
* 返回此 JVM 当前可用的内存总量
*/
public native long totalMemory();
/**
* 返回此 JVM 空闲的近似内存总量
*/
public native long freeMemory();
/**
* 注册一个 JVM 关闭钩子
*
* @param hook 关闭钩子
*/
public void addShutdownHook(Thread hook) {
final SecurityManager sm = System.getSecurityManager();
if (sm != null) {
sm.checkPermission(new RuntimePermission("shutdownHooks"));
}
ApplicationShutdownHooks.add(hook);
}
/**
* 强制终止此 JVM
*
* @param status 终止状态
*/
public void halt(int status) {
final SecurityManager sm = System.getSecurityManager();
if (sm != null) {
sm.checkExit(status);
}
Shutdown.halt(status);
}
/**
* 运行垃圾收集器,建议此 JVM 在合适的时刻执行垃圾收集
*/
public native void gc();
/**
* 在单独的进程中执行目标命令
*
* @param command 一个特定的系统命令
*/
public Process exec(String command) throws IOException {
return exec(command, null, null);
}
/**
* 在工作目录下执行目标命令,并提供指定的环境变量。
*
* @param cmdarray 目标命令及参数
* @param envp 以 name=value 指定的环境变量数组
* @param dir 子进程的工作目录
* @since 1.3
*/
public Process exec(String[] cmdarray, String[] envp, File dir)
throws IOException {
return new ProcessBuilder(cmdarray)
.environment(envp)
.directory(dir)
.start();
}