认识Runtime类
Runtime类表示运行时操作类, 是一个封装了JVM进程的类,每一个JVM对应着一个Runtime类的实例,此实例由JVM运行时为其实例化。
因为Runtime类本身构造方法是私有化的(单例设计),如果想取得一个Runtime实例:
这种形式
Runtime run=Runtime.getRuntime();
得到JVM的内存空间信息
使用Runtime类可以取得JVM中的内存信息,最大内存空间,空闲内存空间等。
public class RuntimeDemo1 {
public static void main(String[] args) {
//通过Runtime类的静态方法实例化操作
Runtime runtime=Runtime.getRuntime();
//观察最大的内存,
System.out.println("JVM最大内存量:"+runtime.maxMemory());
//取得程序运行空闲内存
System.out.println("JVM空闲内存量:"+runtime.freeMemory());
String string="hello"+"world"+"!!"+"!!";
System.out.println(string);
for (int i=0;i<1000;i++){
//循环修改内容,使产生多个垃圾
string+=i;
}
System.out.println("String操作后,JVM空闲内存量"+runtime.freeMemory());
//垃圾操作后,释放空间
runtime.gc();
System.out.println("垃圾回收之后,JVM空闲内存量"+runtime.freeMemory());
}
}
通过for循环修改了String的内容, 操作产生大量垃圾,占用系统内存区域,计算后发现JVM 的内存量减少,当执行gc()方法进行垃圾收集后,可用的空间就变大了。
输出结果:
JVM最大内存量:1877475328
JVM空闲内存量:124193088
helloworld!!!!
String操作后,JVM空闲内存量112091480
垃圾回收之后,JVM空闲内存量125499720
Runtime与Process
范例:让记事本进程运行5s后消失
public class RuntimeDemo2 {
public static void main(String[] args) throws Exception {
//取得Runtime实例化对象
Runtime runtime=Runtime.getRuntime();
//定义进程变量
Process process=null;
//调用本机程序并throws异常
process=runtime.exec("notepad.exe");
//此线程存活5s
Thread.sleep(5000);
//结束此进程
process.destroy();
}
}
直接控制Process()方法进行系统进程的控制。