Java Runtime类
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:
作者:陈剑波
撰写时间:2019年07月09日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Runtime类
Runtime类代表Java程序的运行时环境,可以访问JVM的相关信息,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,但可以通过getRuntime()方法获取与之关联的Runtime对象。
示例代码:
import java.io.IOException; |
|
public class RuntimeClassDemo { |
public static void main(String[] args) { |
// getRuntime():返回与当前Java应用程序关联的运行时对象 |
Runtime runtime = Runtime.getRuntime(); |
// availableProcessors():向Java虚拟机返回可用处理器的数目。 |
System.out.println("可用处理器的数目:" + runtime.availableProcessors()); |
// totalMemory(): 返回Java虚拟机中的内存总量,以字节为单位。 |
System.out.println("虚拟机内存总量:" + runtime.totalMemory()); |
// freeMemory() 返回Java虚拟机中的空闲内存量,以字节为单位。 |
System.out.println("虚拟机空闲内存量:" + runtime.freeMemory()); |
// gc():运行垃圾回收器。 |
// Java会周期性的回收垃圾对象(未使用的对象),以便释放内存空间。但是如果想先于收集器 |
// 的下一次指定周期来收集废弃的对象,可以通过调用gc()方法来根据需要运行无用单元收集器。 |
//试验方法是先调用gc()方法,然后调用freeMemory()方法来查看基本的内存使用 |
// 情况,接着执行代码,然后再次调用freeMemory()方法看看分配了多少内存。 |
runtime.gc(); |
System.out.println("运行垃圾回收器后虚拟机空闲内存量:" + runtime.freeMemory()); |
// maxMemory()返回Java虚拟机试图使用的大内存量,以字节为单位。 |
System.out.println("虚拟机使用的大内存量:" + runtime.maxMemory()); |
// exec(String command):在单独的进程中执行指定的字符串命令。 |
// try {//使用ecec()方法启动windows的记事本notepad。这个例子必须在Windows操作系统上运行。 |
// runtime.exec("notepad.exe"); |
// } catch (IOException e) { |
// // TODO Auto-generated catch block |
// e.printStackTrace(); |
// } |
// try {//使用ecec()方法启动windows的计算器calc。 |
// runtime.exec("calc"); |
// } catch (IOException e) { |
// // TODO Auto-generated catch block |
// e.printStackTrace(); |
// } |
// exit(int status):通过启动虚拟机的关闭序列,终止当前正在运行的Java虚拟机。 |
// runtime.exit(0);// 参数:状态终止状态。按照惯例,非零状态码表示异常终止。 |
// // halt(int status):强行终止目前正在运行的Java虚拟机。 |
//halt(int status)方法使用时应极为谨慎。与exit方法不同,此方法不会启动关机挂钩,并且如果启用了exit上的 |
//终结器,则不会运行未调用的终结器。如果已启动关机序列,则此方法不会等待任何正在运行的关机钩子或终结器完成其工作。 |
// runtime.halt(0);//状态终止状态。按照惯例,非零状态码表示异常终止。 |
} |
} |
运行结果:
可用处理器的数目:8 |
虚拟机内存总量:255852544 |
虚拟机空闲内存量:253167944 |
运行垃圾回收器后虚拟机空闲内存量:254030224 |
虚拟机使用的大内存量:3797417984 |
Runtime类是饿汉式单例类
public class Runtime { |
//饿汉式单例类:在类初始化时,已经自行实例化。 |
//特点:线程安全,调用效率高,但是不能延时加载 |
//作用:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 |
private static Runtime currentRuntime = new Runtime(); |
/** @return 返回与当前Java应用程序关联的运行时对象。*/ |
public static Runtime getRuntime() { |
return currentRuntime; |
} |
/** 不要让任何人实例化这个类 */ |
private Runtime() {} |
} |