java学习笔记(三十四)认识Runtime类

来源:互联网 发布:金额均分算法 编辑:程序博客网 时间:2024/06/05 23:44
 

1.1  认识Runtime类


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

 

public class Runtimeextends Object每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。

应用程序不能创建自己的 Runtime 类实例。


1.2   本类的定义中根本就没有构造方法,本类的构造公共被私有化了。则在此类中肯定有一个方法可以返回该类的实例化对象。

public static Runtime getRuntime()

返回与当前 Java 应用程序相关的运行时对象。Runtime 类的大多数方法是实例方法,并且必须根据当前的运行时对象对其进行调用。

返回:
与当前 Java 应用程序相关的 Runtime 对象。

--------------------------------------------------------------------------------

得到JVM信息

实例:


 

public class RunTimeDemo01{ public static void main(String args[]){ Runtime run = Runtime.getRuntime(); System.out.println("JVM最大内存:"+run.maxMemory()); System.out.println("JVM空闲内存:"+run.freeMemory()); }}


 

结果:

F:\java>javac RunTimeDemo01.java

F:\java>java RunTimeDemo01
JVM最大内存:259522560
JVM空闲内存:15932104


1.3    释放内存  run.gc()

public class RunTimeDemo01{ public static void main(String args[]){ Runtime run = Runtime.getRuntime(); String str = "hahei"+"dd"+"sggh"; System.out.println("JVM最大内存:"+run.maxMemory()); System.out.println("操作之前JVM空闲内存:"+run.freeMemory()); for(int i = 0;i < 100;i++){ str += i; }    System.out.println("JVM最大内存:"+run.maxMemory()); System.out.println("操作之后JVM空闲内存:"+run.freeMemory()); run.gc();    System.out.println("free之后"+run.freeMemory()); }}


结果:

F:\java>javac RunTimeDemo01.java

F:\java>java RunTimeDemo01
JVM最大内存:259522560
操作之前JVM空闲内存:15932176
JVM最大内存:259522560
操作之后JVM空闲内存:15841496
free之后16045904

 

1.4  Runtime类与Process类


除了观察内存使用量之外,也可以直接使用Runtime类运行本机的可执行程序,例如,调用记事本

 

public Process exec(String command)
             throws IOException在单独的进程中执行指定的字符串命令。
这是一个很有用的方法。对于 exec(command) 形式的调用而言,其行为与调用 exec(command, null, null) 完全相同。


参数:
command - 一条指定的系统命令。
返回:
一个新的 Process 对象,用于管理子进程
抛出:
SecurityException - 如果安全管理器存在,并且其 checkExec 方法不允许创建子进程
IOException - 如果发生 I/O 错误
NullPointerException - 如果 command 为 null
IllegalArgumentException - 如果 command 为空

 


实例: