详解 System 与 Runtime

2017-01-18  本文已影响81人  Lstone

java 程序在不同的操作系统上运行的时候,可能需要获取平台相关属性,或者调用相关命令来完成特定功能. java提供了System 和 Runtime 供我们使用。

System 类

System 类提供了一些有用的类方法和字段.System 提供了标准的输入,输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库方法,还有快速复制数组的一部分使用方法.

上面两个返回的都是一个 long 类型整数,实际上返回的都是当前时间与 UTC 1970 年1月1日午夜的时间差,前者是以毫秒为单位,后者是以纳秒为单位.

str1被创建以后,对象会放到一个常量池中,当再次创建 "123"变量的时候,会优先去常量池中查找,如果常量池中存在该字符串序列,那么将不会存在新的字符串对象.如果不存在,那么将创建一个新的字符串对象,并放到字符串常量池中. 而 str2 创建的对象存放在堆中,没次使用 new 创建字符串的时候,都会创建一个新的字符串对象.

Runtime 类

每一个 java 程序都有一个 Runtime 类的实例.例如:每一个 android 程序都是在一个单独的虚拟机中执行的,每个虚拟机都是操作系统的一个独立进程.能够是应用程序与运行时环境相连接,我们只能通过 getRuntime 方法获取当前的运行时,应用程序不能够创建自己的 Runtime 实例,Runtime 提供主要有两大功能:

  1. 通过 Runtime 我们可以获得运行时环境Java虚拟机的一些 运行时信息
    System.out.println("可用处理器数目:"+runtime.availableProcessors());
    System.out.println("java 虚拟机的内存总量::"+runtime.totalMemory());
    System.out.println("当前空闲的内存:"+runtime.freeMemory());

  2. Runtime还可以单独启动一个进程来运行操作系统的命令
    //Process process = runtime.exec("ls -al"); //两种方式执行命令
    Process process = runtime.exec(new String[]{"ls","-al"});
    //命令执行结果我们可以通过接收一个输入流来接收
    InputStream inputStream = process.getInputStream();
    byte[] b = new byte[1024];
    inputStream.read(b);
    System.out.println("命令执行结果:"+new String(b));

上一篇 下一篇

猜你喜欢

热点阅读