理解java 运行时类以及相关操作
Runtime类:
每个JVM启动时,都对应一个Runtime实例;
此类的构造方法被私有化,只能使用内部方法访问本类的实例;
使用单例设计;
public static Runtime getRuntime(); // jingtai
用Runtime类可以直接运行本机的程序;
public Process exec(String command) throws IOException;
———-运行本地的程序:
package com.mldn;
import java.io.IOException; // 非java lang包要导入!
public class RuntimeTest
{
public static void main(String[] args)
{
Runtime run = Runtime.getRuntime(); // 单例设计,获取实例
try // 该try块可以在main方法上抛出代替
{
run.exec(“gedit”); // 执行gedit程序
}
catch (IOException e)
{
e.printStackTrace();
}
}
/*
public static void main(String[] args) throws Exception
{
Runtime run = Runtime.getRuntime(); // 单例设计,获取实例
run.exec(“gedit”); // 执行gedit程序,exec的返回值是个 Process类的对象表示一个进程
}
// windows下:可以用notepad代替geidt;
*/
}
————-自动关闭一个运行的进程:
public static void destroy(); // 属于Process类用于销毁一个进程对象
—-实例:
package com.mldn;
public class ProcessTest
{
public static void main(String[] args) throws Exception
{
Runtime run = Runtime.getRuntime(); // 单例设计,获取实例
Process pro = run.exec(“midori”); // 执行gedit程序 ,返回的是一个Process类 的对象,进程
Thread.sleep(2000); // 持续2秒,再关闭
pro.destroy();
}
}
———— Runtime查询系统信息:
1.maxMemory(), freeMemory(), totalMemory()查询内存;
2.gc()释放垃圾内存空间;
实例:
package com.mldn;
public class RuntimeDemo
{
public static void main(String[] args) throws Exception
{
Runtime run = Runtime.getRuntime(); // 单例设计,获取实例
System.out.println(“最大可用内存:” + run.maxMemory());
System.out.println(“执行循环前空闲内存:” + run.freeMemory());
System.out.println(“全部内存:” + run.totalMemory());
String str = ” “;
for (int i = 0; i < 10000; i++)
{
str += i; // 产生大量垃圾,因为String不自动修改内容,而是开辟新空间;
}
System.out.println(“最大可用内存:” + run.maxMemory());
System.out.println(“执行循环后空闲内存:” + run.freeMemory());
System.out.println(“全部内存:” + run.totalMemory());
}
}
/*
最大可用内存:66650112
执行循环前空闲内存:4972728
全部内存:5177344
最大可用内存:66650112
执行循环后空闲内存:2663056 // 明显减少,因为运行时,并没有进行垃圾回收,
全部内存:5177344
*/
—————-gc垃圾回收:
package com.mldn;
public class RuntimeDemo
{
public static void main(String[] args) throws Exception
{
Runtime run = Runtime.getRuntime(); // 单例设计,获取实例
System.out.println(“执行循环前空闲内存:” + run.freeMemory());
String str = ” “;
for (int i = 0; i < 10000; i++)
{
str += i; // 产生大量垃圾,因为String不自动修改内容,而是开辟新空间;
}
System.out.println(“执行循环后空闲内存:” + run.freeMemory());
run.gc(); // 垃圾回收
System.out.println(“垃圾回收后的空闲内存:” + run.freeMemory());
}
}
/*
administrator@xu-desktop:~$ java com.mldn.RuntimeDemo
执行循环前空闲内存:4972752
执行循环后空闲内存:2663056
垃圾回收后的空闲内存:4993816
*/
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《理解java 运行时类以及相关操作》
本文地址:http://www.xiupu.net/archives-186.html
关注公众号:
微信赞赏
支付宝赞赏