package edu.fjut.runtime;
/**简介:
* Runtime(运行时):是一个封装了JVM进程的类.每运行一个JAVA程序实际上
* 都是启动了一个JVM进程,而每一个JVM进程都是对应这一个Runtime实例,此
* 实例是由JVM实例化的.在整个JVM中只存在一个Runtime类的对象.
*
* 在Runtime类的定义中没有构造方法,因为其构造方法被私有化了,即被设计
* 成单例模式了,那么在此类中必然有一个静态方法可以返回本类的实例化对象.
*
* public static Runtime getRuntime();
*/
//每一个Runtime对象都是由JVM进行实例化的
//所以可以直接通过此类取得JVM的一些信息
public class RuntimeDemo1 {
public static void main(String[] args) {
//通过runtime类的静态方法进行实例化
Runtime run=Runtime.getRuntime();
//取得JVM的最大内存量,根据机器不同而不同
System.out.println("JVM最大内存:"+run.maxMemory());
//取得程序运行的空闲内存
System.out.println("JVM空闲内存:"+run.freeMemory());
//以下验证使用String操作字符串(增删改查)容易降低性能
String str="Hello"+"world"+"!"+"Welcome to"+"China.";
System.out.println(str);
for(int i=0;i<1000;i++){
str+=i; //循环修改内容,会产生很多内容
}
System.out.println("操作String之后,JVM空闲内存:"+run.freeMemory());
//进行垃圾收集,释放空间
run.gc();
System.out.println("进行垃圾回收之后,JVM空闲内存:"+run.freeMemory());
}
/*结果输出:
* JVM最大内存:66650112
* JVM空闲内存:4955768
* Helloworld!Welcome toChina.
* 操作String之后,JVM空闲内存:4477360
* 进行垃圾回收之后,JVM空闲内存:5030072
*/
}
package edu.fjut.runtime;
import java.io.IOException;
//可以直接使用Runtime类运行本机的可执行程序
public class RuntimeDemo2 {
//打开一个记事本,五秒后自动关闭
public static void main(String[] args) {
// 取得Runtime类的实例化对象
Runtime run=Runtime.getRuntime();
Process p=null;//定义进程变量
try {
p=run.exec("notepad.exe");// 调用本机记事本程序
Thread.sleep(5000);//让此线程存活5秒
p.destroy();//结束此进程
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}