美文网首页
Runtime类

Runtime类

作者: 秋笙fine | 来源:发表于2019-01-26 15:34 被阅读0次

1.Runtime类的主要作用

在每一个JVM进程里面都会存在有一个Runtime类的对象,这个类的主要功能是取得一些与运行时有关的环境属性,或者创建新的进程。
在Runtime类定义的时候,它的构造方法已经被私有化了(单例设计模式的应用),以此保证,在整个运行过程中,只有唯一一个Runtime类的对象。所以在Runtime类里面提供有一个static方法,取得Runtime类实例对象

public static Runtime getRuntime();

2.Runtime类的定义形式

Runtime类中有以下方法:
public long totalMemory();//返回所有可用内存空间
public long maxMemory();//返回最大可用内存空间
public long freeMemory();//返回空余内存空间

范例:观察内存大小:

public class TestDemo{
    
    public static void main(String[] args){
        Runtime runtime=Runtime.getRuntime();
        System.out.println("MAX="+runtime.maxMemory());
        System.out.println("Total="+runtime.totalMemory());
        System.out.println("FREE="+runtime.freeMemory());
    }   
}
image.png

如果一旦产生了过多垃圾,那么就会改变可用的内存空间大小,为此Runtime类里面提供了:public void gc();手动实现JVM的gc机制。

package TestDemo;


public class TestDemo{
    
    public static void main(String[] args){
        Runtime runtime=Runtime.getRuntime();
        System.out.println("MAX="+runtime.maxMemory());
        System.out.println("Total="+runtime.totalMemory());
        System.out.println("FREE="+runtime.freeMemory());
        String str="";
        for (int i = 0; i < 9000; i++) {
            str+=i;
        }
        System.out.println("MAX="+runtime.maxMemory());
        System.out.println("Total="+runtime.totalMemory());
        System.out.println("FREE="+runtime.freeMemory());
        runtime.gc();
        System.out.println("MAX="+runtime.maxMemory());
        System.out.println("Total="+runtime.totalMemory());
        System.out.println("FREE="+runtime.freeMemory());
    }   
}


image.png

面试题:请解释什么叫GC?如何处理?
GC(Garbage Collection) 垃圾收集器,指的是释放无用的内存空间,GC会由JVM不定期自动回收,(FGC,YGC,GC算法)或者调用Runtime的gc()方法。

Runtime类有一个更有意思的方法, 调用本机的可执行程序并且创建进程

public Process exec(String command)throws IOException

package TestDemo;


public class TestDemo{
    
    public static void main(String[] args)throws Exception{
        Runtime runtime=Runtime.getRuntime();
        Process pro=runtime.exec("mspaint.exe");//调用本机可执行程序
        Thread.sleep(5000);
        pro.destroy();//销毁进程
    }   
}


的确启动了本机的画图程序,5秒后关闭了

总结

1.Runtime类使用了单例设计模式,必须通过内部的getRuntime()方法获取实例化对象
2.Runtime类提供了gc()用于手动GC

相关文章

  • OC -> Runtime

    Runtime简介 Runtime用处 Runtime实践 Runtime 类方法调用实现。Person * p ...

  • runtime02-常用API

    runtime常用API runtime API01-类相关 runtime API01-类相关-事例01 run...

  • Runtime初识

    runtime的使用先导入runtime类 runtime 可以对类操作举个例子先创建一个Person类在.h中声...

  • iOS底层原理 - Runtime-03

    Runtime API - 类 Runtime API – 成员变量 Runtime API – 属性 Runt...

  • Java基础类库之Runtime类和System类

    导语 了解就好。 主要内容 Runtime类的主要作用 Runtime类的定义形式 System类 如何计算某个代...

  • Runtime类的基本使用

    日常开发中,Runtime类并不常用,所以我对Runtime的基本使用并不了解,借此篇文章加深对Runtime类理...

  • Objective-C Runtime(三)Method Swi

    Runtime 3 Method Swizzling Objective-C Runtime(一) 简介 对象、类...

  • Runtime:OC对象、类、元类的本质

    零、Runtime是什么一、OC对象的本质二、OC类的本质三、OC元类的本质四、Runtime关于对象、类、元类的...

  • Runtime类

    1.Runtime类的主要作用 在每一个JVM进程里面都会存在有一个Runtime类的对象,这个类的主要功能是取得...

  • Runtime类

    Runtime类:代表了当前程序的运行环境Runtime对象需要掌握的方法 控制台输出

网友评论

      本文标题:Runtime类

      本文链接:https://www.haomeiwen.com/subject/mpeijqtx.html