Java Runtimeクラスの基本的な使用

1735 ワード

公式サイト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();//                

	}