Java Runtime类

Java Runtime类

Java Runtime类用于与Java运行时环境交互。Java Runtime类提供了执行进程,调用GC,获取总内存和可用内存等的方法。一个java应用程序只有一个java.lang.Runtime类实例。

Runtime.getRuntime()方法返回Runtime类的单例实例。

Java Runtime类的重要方法

编号 方法 描述
1 public static Runtime getRuntime() 返回Runtime类的实例。
2 public void exit(int status) 终止当前的虚拟机。
3 public void addShutdownHook(Thread hook) 注册新的钩子线程。
4 public Process exec(String command)throws IOException 在单独的进程中执行给定的命令。
5 public int availableProcessors() 返回可用的处理器的编号。
6 public long freeMemory() 返回JVM中的可用内存量。
7 public long totalMemory() 返回JVM中的总内存量。

Java Runtime exec()方法

public class Runtime1{  
 public static void main(String args[])throws Exception{  
  Runtime.getRuntime().exec("notepad");//will open a new notepad  
 }  
}

如何在Java执行关闭计算机系统
可以使用shutdown -s命令关闭系统。 对于Windows操作系统,需要提供完整的关闭命令路径,例如:c:\\\\Windows\\\\System32\\\\shutdown

在这里可以使用-s switch来关闭系统,-r switch来重启系统,-t switch来指定时间延迟。

public class Runtime2{  
 public static void main(String args[])throws Exception{  
  Runtime.getRuntime().exec("shutdown -s -t 0");  
 }  
}

如何在Java中关闭Windows系统

public class Runtime2{  
 public static void main(String args[])throws Exception{  
  Runtime.getRuntime().exec("c:\\\\Windows\\\\System32\\\\shutdown -s -t 0");  
 }  
}

如何在Java中重启Windows系统

public class Runtime3{  
 public static void main(String args[])throws Exception{  
  Runtime.getRuntime().exec("shutdown -r -t 0");  
 }  
}

Java Runtime availableProcessors()方法

public class Runtime4{  
 public static void main(String args[])throws Exception{  
  System.out.println(Runtime.getRuntime().availableProcessors());  
 }  
}

Java Runtime freeMemory()和totalMemory()方法
在给定的程序中,创建10000个实例后,空闲内存将小于之前的空闲内存。 但是在gc()调用之后,将获得更多的可用内存。

package com.zyiz;

public class MemoryTest {
    public static void main(String args[]) throws Exception {
        Runtime r = Runtime.getRuntime();
        System.out.println("Total Memory: " + r.totalMemory());
        System.out.println("Free Memory: " + r.freeMemory());

        for (int i = 0; i < 10000; i++) {
            new MemoryTest();
        }
        System.out.println("After creating 10000 instance, Free Memory: " + r.freeMemory());
        System.gc();
        System.out.println("After gc(), Free Memory: " + r.freeMemory());
    }
}

执行上面示例代码,得到以下结果:

Total Memory: 128974848
Free Memory: 126930016
After creating 10000 instance, Free Memory: 126930016
After gc(), Free Memory: 127734760