Java常用类库----Runtime类 && Process类
认识Runtime类
Runtime:运行时,是一个封装了JVM进程的类。每一个Java程序实际上都是启用了一个JVM进程,那么每一个JVM进程都对应这一个Runtime实例,此实例是由JVM为其实例化的。
本类的定义中根本就没有构造方法,本类的构造方法被私有化了。则在此类中肯定有一个方法可以返回本类的实例化对象。
public static Runtime getRuntime()
直接使用此静态方法就可以取得Runtime类的实例。
一旦取得实例化之后,以上的方法就可以进行操作了。
得到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()) ; } };
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()方法释放掉垃圾空间,还可以使用此类运行本机的程序。

浙公网安备 33010602011771号