码迷,mamicode.com
首页 > 编程语言 > 详细

Java笔记:运行时

时间:2018-02-22 23:51:23      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:cep   begin   i++   lis   b2c   uil   ret   循环   平台   

一、进程

抽象类Process用来封装进程,即执行的程序。Process主要用作由Runtime的exec方法创建的对象类型或由ProcessBuilder的start方法创建的对象类型的超类。

 

二、运行时环境

Runtime封装了运行时环境,不能实例化Runtime对象,而是通过调用静态方法Runtime.getRuntime方法来获得当前Runtime对象的引用。一旦获得当前Runtime对象的引用,就可以调用一些控制Java虚拟机的状态和行为。

 

三、内存管理

尽管Java提供了自动的垃圾回收功能,但是有时需要了解对象堆的大小或剩余空间的大小,可以使用totalMemory方法和freeMemory方法。我们直到Java垃圾回收器周期性地运行,回收不再使用的对象。但是,有时会希望在垃圾回收器下次指定运行之前回收废弃的对象。可以调用gc方法来要求运行垃圾回收器。

技术分享图片
class Solution {
    public static void main(String[] args) {
        Runtime runtime = Runtime.getRuntime();
        Double[] arr = new Double[100000];
        for (int i = 0; i < arr.length; i++)
            arr[i] = 0.0;
        arr = null;
        System.out.println(runtime.freeMemory());
        runtime.gc();
        System.out.println(runtime.freeMemory());
    }
}
View Code


四、执行其他程序

在安全环境中,可以在多任务操作系统下使用Java执行其他重量级的进程。有几种形式的exec方法运行命名希望运行的程序,并允许提供输入参数。exec方法返回Process对象,然后可以使用该对象控制Java程序与该新运行的进程的交互方式。因为Java程序可以运行各种平台和操作系统上,所以exec时环境独立的。

技术分享图片
import java.io.IOException;

class Solution {
    public static void main(String[] args) {
        Runtime runtime = Runtime.getRuntime();
        Process process = null;
        try {
            process = runtime.exec("notepad");//运行记事本
            process.waitFor();//等待进程关闭
        } catch (IOException exc) {
            System.out.println("Cannot execute notepad");
        } catch (InterruptedException exc) {
            System.out.println("Process interrupted");
        }
        System.out.println(process.exitValue());
    }
}
View Code


五、进程创建类

技术分享图片
import java.io.IOException;

class Solution {
    public static void main(String[] args) {
        try {
            ProcessBuilder builder = new ProcessBuilder("notepad.exe", "file.txt");
            builder.start();
        } catch (IOException exc) {
            System.out.println("Cannot execute notepad");
        }
    }
}
View Code


六、系统类

通过currentTimeMillis方法可获取自1970年1月1日午夜到当前时间的毫秒数。

技术分享图片
class Solution {
    public static void main(String[] args) {
        long begin = System.currentTimeMillis();
        try {

            for (int i = 0; i < 10; i++) {
                Thread.sleep(1000);
                long end = System.currentTimeMillis();
                System.out.println(end - begin);
            }
        } catch (InterruptedException exc) {
            System.out.println("Thread interrupted");
        }
    }
}
View Code

复制数组,相较于普通循环更快。

技术分享图片
class Solution {
    static int[] copyArray(int[] arr) {
        int[] cpy = new int[arr.length];
        System.arraycopy(arr, 0, cpy, 0, arr.length);
        return cpy;
    }

    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};
        int[] cpy = copyArray(arr);
        for (int i : cpy)
            System.out.println(i);
    }
}
View Code

环境属性。

技术分享图片
class Solution {
    public static void main(String[] args) {
        System.out.println(System.getProperties());
    }
}
View Code

 

Java笔记:运行时

标签:cep   begin   i++   lis   b2c   uil   ret   循环   平台   

原文地址:https://www.cnblogs.com/arseneyao/p/8460468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!