Java常用类库——Runtime类

学习目标

了解Runtime类
使用Runtime类取得JVM的空间信息
Runtime类与Process类

什么是Runtime类?

Runtime:运行时,是一个封装了JVM进程的类。每一个JAVA程序实际上都是启动了一个JVM进程,那么每一个进程都是对应这一个Runtime实例,其实例是由JVM为其初始化的。

 Runtime类的常用方法

public static Runtime getRuntime()  普通方法  用于取得Runtime类的实例
public long freeMemory()  普通方法 用于返回Java虚拟机中的空闲内存
public long maxMemory() 返回JVM的最大内存量
public void gc() 运行垃圾回收器。释放空间。
public Process exec(String command) throws IOException 执行本机命令
一旦取得实例后,以上的方法就可以进行操作了。

得到JVM信息

每一个Runtime对象都是有JVM进行实例化,所以,可以直接通过此类取得一些信息。
public class RuntimeDemo01{
	public static void main(String args[]){
		Runtime run = Runtime.getRuntime();	// 通过Runtime类的静态方法进行实例化操作
		System.out.println("JVM最大内存量:" + run.maxMemory()) ;	// 观察最大的内存,根据机器的不同,环境也会有所不同
		System.out.println("JVM空闲内存量:" + run.freeMemory()) ;	// 取得程序运行的空闲内存
		String str = "Hello " + "World" + "!!!" 
				+"\t" + "Welcome " + "To " + "MLDN" + "~" ;
		System.out.println(str) ;
		for(int x=0;x<1000;x++){
			str += x ;			// 循环修改内容,会产生多个垃圾
		}
		System.out.println("操作String之后的,JVM空闲内存量:" + run.freeMemory()) ;
		run.gc() ;		// 进行垃圾收集,释放空间
		System.out.println("垃圾回收之后的,JVM空闲内存量:" + run.freeMemory()) ;
	}
};
Java常用类库——Runtime类_第1张图片
Runtime与Process类
除了观察内存使用量外,也可以直接使用Runtime类运行本机的可执行程序。例如调用记事本。
public Process exec(String command) throws IOException
public class RuntimeDemo02{
	public static void main(String args[]){
		Runtime run = Runtime.getRuntime() ;	// 取得Runtime类的实例化对象
		try{
			run.exec("notepad.exe") ;	// 调用本机程序,此方法需要异常处理
		}catch(Exception e){
			e.printStackTrace() ;	// 打印异常信息
			// System.out.println(e) ;
		}
	}
};
以上程序只是打开了一个记事本,现在要求一个记事本程序运行5秒之后自动进行关闭。如果要想实现以上的功能就必须操作进程了,因为每一个记事本打开都会存在一个进程的。
exec()方法的返回值是Process,表示一个进程的操作类,可以通过一个destroy()方法销毁掉一个进程。
public class RuntimeDemo03{
	public static void main(String args[]){
		Runtime run = Runtime.getRuntime() ;	// 取得Runtime类的实例化对象
		Process p = null ;	// 定义进程变量
		try{
			p = run.exec("notepad.exe") ;	// 调用本机程序,此方法需要异常处理
		}catch(Exception e){
			e.printStackTrace() ;	// 打印异常信息
			// System.out.println(e) ;
		}
		try{
			Thread.sleep(5000) ;	// 让此线程存活5秒
		}catch(Exception e){
		}
		p.destroy() ;	// 结束此进程
	}
};

总结:
Runtime类本身就是单态设计的一种应用,因为在整个JVM中只存在一个Runtime类的对象,可以使用Runtime类取得JVM系统信息,或者使用gc()方法释放掉垃圾空间,还可以使用此类运行本机的程序

你可能感兴趣的:(Java常用类库——Runtime类)