Java Runtime类

Java Runtime

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:

作者:陈剑波

撰写时间:2019年07月09日

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Runtime

Runtime类代表Java程序的运行时环境,可以访问JVM的相关信息,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,但可以通过getRuntime()方法获取与之关联的Runtime对象。

示例代码:

import java.io.IOException;

 

public class RuntimeClassDemo {

    public static void main(String[] args) {

        // getRuntime():返回与当前Java应用程序关联的运行时对象

        Runtime runtime = Runtime.getRuntime();

        // availableProcessors():向Java虚拟机返回可用处理器的数目。

        System.out.println("可用处理器的数目:" + runtime.availableProcessors());

        // totalMemory() 返回Java虚拟机中的内存总量,以字节为单位。

        System.out.println("虚拟机内存总量:" + runtime.totalMemory());

        // freeMemory() 返回Java虚拟机中的空闲内存量,以字节为单位。

        System.out.println("虚拟机空闲内存量:" + runtime.freeMemory());

        // gc():运行垃圾回收器。

        // Java会周期性的回收垃圾对象(未使用的对象),以便释放内存空间。但是如果想先于收集器

        // 的下一次指定周期来收集废弃的对象,可以通过调用gc()方法来根据需要运行无用单元收集器。

    //试验方法是先调用gc()方法,然后调用freeMemory()方法来查看基本的内存使用

        // 情况,接着执行代码,然后再次调用freeMemory()方法看看分配了多少内存。

        runtime.gc();

        System.out.println("运行垃圾回收器后虚拟机空闲内存量:" + runtime.freeMemory());

        // maxMemory()返回Java虚拟机试图使用的大内存量,以字节为单位。

        System.out.println("虚拟机使用的大内存量:" + runtime.maxMemory());

        // exec(String command):在单独的进程中执行指定的字符串命令。

        // try {//使用ecec()方法启动windows的记事本notepad。这个例子必须在Windows操作系统上运行。

        // runtime.exec("notepad.exe");

        // } catch (IOException e) {

        // // TODO Auto-generated catch block

        // e.printStackTrace();

        // }

        // try {//使用ecec()方法启动windows的计算器calc

        // runtime.exec("calc");

        // } catch (IOException e) {

        // // TODO Auto-generated catch block

        // e.printStackTrace();

        // }

        // exit(int status):通过启动虚拟机的关闭序列,终止当前正在运行的Java虚拟机。

//  runtime.exit(0);// 参数:状态终止状态。按照惯例,非零状态码表示异常终止。

//      // halt(int status):强行终止目前正在运行的Java虚拟机。

        //halt(int status)方法使用时应极为谨慎。与exit方法不同,此方法不会启动关机挂钩,并且如果启用了exit上的

        //终结器,则不会运行未调用的终结器。如果已启动关机序列,则此方法不会等待任何正在运行的关机钩子或终结器完成其工作。

//      runtime.halt(0);//状态终止状态。按照惯例,非零状态码表示异常终止。

    }

}

运行结果:

可用处理器的数目:8

虚拟机内存总量:255852544

虚拟机空闲内存量:253167944

运行垃圾回收器后虚拟机空闲内存量:254030224

虚拟机使用的大内存量:3797417984

 

Runtime类是饿汉式单例类

public class Runtime {

    //饿汉式单例类:在类初始化时,已经自行实例化。

    //特点:线程安全,调用效率高,但是不能延时加载

    //作用:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    private static Runtime currentRuntime = new Runtime();

     /** @return  返回与当前Java应用程序关联的运行时对象。*/

    public static Runtime getRuntime() {

        return currentRuntime;

    }

    /** 不要让任何人实例化这个类  */

    private Runtime() {}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值