转自:http://blog.chinaunix.net/uid-128922-id-289994.html

 Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够
与其运行的环境相连接。一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类
实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。 一旦得到了一个当前的
Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为。
常见的应用有 1:执行外部程序(调用外部命令) 举例:用java调用外部mcl数据分析工具(之前我已经把mcl安装的bin目录导入到了PATH中) String [] cmd={"cmd","/C","mcl D:\\input.txt --abc -o D:\\output.txt -I 1 -scheme 7"}; Process proc =Runtime.getRuntime().exec(cmd);
注意目录中用“\\”代替"\"。 如果外部命令过于复杂可以自己写一个bat或shell脚本然后调用 如下 String [] cmd={"cmd","/C","E:\\test3.bat"}; Process proc =Runtime.getRuntime().exec(cmd);
下面对Runtime.exec()做个总结

Windows下调用程序

Process proc =Runtime.getRuntime().exec("exefile");

Linux下调用程序就要改成下面的格式

Process proc =Runtime.getRuntime().exec("./exefile");

Windows下调用系统命令

String [] cmd={"cmd","/C","copy exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);

Linux下调用系统命令就要改成下面的格式

String [] cmd={"/bin/sh","-c","ln -s exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);

Windows下调用系统命令并弹出命令行窗口

String [] cmd={"cmd","/C","start copy exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);

Linux下调用系统命令并弹出终端窗口就要改成下面的格式

String [] cmd={"/bin/sh","-c","xterm -e ln -s exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);

还有要设置调用程序的工作目录就要

Process proc =Runtime.getRuntime().exec("exeflie",null, new File("workpath"));
2:内存管理
Java提供了无用单元自动收集机制。通过totalMemory()和freeMemory()方法可以知道对象的堆内存有多大,还剩多少。
Java会周期性的回收垃圾对象(未使用的对象),以便释放内存空间。但是如果想先于收集器的下一次指定周期来收集废弃的对象,可以通过调用gc()方法来根据需要运行无用单元收集器。
一个很好的试验方法是先调用gc()方法,然后调用freeMemory()方法来查看基本的内存使用情况,接着执行代码,然后再次调用freeMemory()方法看看分配了多少内存。
下面的程序演示了这个构想。
class MemoryDemo{ 
        public static void main(String args[]){ 
                Runtime r = Runtime.getRuntime(); 
                long mem1,mem2; 
                Integer someints[] = new Integer[1000]; 
                System.out.println("Total memory is :" + r.totalMemory()); 
                mem1 = r.freeMemory(); 
                System.out.println("Initial free is : " + mem1); 
                r.gc(); 
                mem1 = r.freeMemory(); 
                System.out.println("Free memory after garbage collection : " + mem1); 
                //allocate integers 
                for(int i=0; i<1000; i++) someints[i] = new Integer(i);    
                mem2 = r.freeMemory(); 
                System.out.println("Free memory after allocation : " + mem2); 
                System.out.println("Memory used by allocation : " +(mem1-mem2));    
                //discard Intergers 
                for(int i=0; i<1000; i++) someints[i] = null; 
                r.gc(); //request garbage collection 
                mem2 = r.freeMemory(); 
                System.out.println("Free memory after collecting " + "discarded integers : " + mem2); 
        } 
}
编译后运行结果如下(不同的机器不同时间运行的结果也不一定一样):
Total memory is :2031616
Initial free is : 1818488
Free memory after garbage collection : 1888808
Free memory after allocation : 1872224
Memory used by allocation : 16584
Free memory after collecting discarded integers : 1888808
 

java.lang.Runtime类总结 【转】的更多相关文章

  1. 深入研究java.lang.Runtime类【转】

    转自:http://blog.csdn.net/lastsweetop/article/details/3961911 目录(?)[-] javalang 类 Runtime getRuntime e ...

  2. 浅析Java.lang.Runtime类

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

  3. 【转】深入研究java.lang.Runtime类

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

  4. 深入研究java.lang.Runtime类

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

  5. 深入研究java.lang.Runtime类(转)

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

  6. 浅析Java.lang.ProcessBuilder类

    最近由于工作需要把用户配置的Hive命令在Linux环境下执行,专门做了一个用户管理界面特地研究了这个不经常用得ProcessBuilder类.所以把自己的学习的资料总结一下. 一.概述      P ...

  7. 浅析Java.lang.Process类

    一.概述      Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序).      Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的 ...

  8. 深入研究java.lang.ProcessBuilder类

     深入研究java.lang.ProcessBuilder类 一.概述       ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它 ...

  9. 深入研究java.lang.Process类

    一.概述 Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序).       Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的退出状态 ...

随机推荐

  1. mysql 快速生成百万条测试数据

    1.生成思路 利用mysql内存表插入速度快的特点,先利用函数和存储过程在内存表中生成数据,然后再从内存表插入普通表中 2.创建内存表及普通表 CREATE TABLE `vote_record_me ...

  2. 关于 0xCCCCCCCC

    http://xingyunbaijunwei.blog.163.com/blog/static/76538067201281793111474/ http://stackoverflow.com/q ...

  3. debug 使用lldb

    http://www.zddhub.com/memo/2015/12/20/lldb-golang-debug/ go build -gcflags "-N -l" -o test ...

  4. Oracle Flashback Technologies (总)

    Oracle Flashback Technologies Oracle 9i中增加了闪回查询技术,闪回查询为数据库提供了一种简单.强大.完全无干扰从人为错误中恢复的机制.通过闪回查询,用户可以查看过 ...

  5. jQuery中的siblings

    所谓siblings,英文翻译就是兄弟节点.那么故名思意,就是拿到某元素的兄弟节点(不包括自己). <html> <head> <script type="te ...

  6. mysql导sql脚本

    在navicat或sql yog ,或dos窗口中,如下 命令 ->mysql source d:\test.sql;

  7. ROC曲线及AUC评价指标

    很多时候,我们希望对一个二值分类器的性能进行评价,AUC正是这样一种用来度量分类模型好坏的一个标准.现实中样本在不同类别上的不均衡分布(class distribution imbalance pro ...

  8. JMX超详细解读

    一.JMX的定义 JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架.JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和 ...

  9. tableview的cell点击和取消

    #pragma mark - 选择cell: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPa ...

  10. Activity之间的数据传递

    最常用的Activity之间的数据传递. btnStartAty1.setOnClickListener(new View.OnClickListener() { @Override public v ...