Java Runtime类的基本使用

官网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();// 运行待完成的任何对象的终结方法

	}

你可能感兴趣的:(JavaSE)