• Runtime 类初探


    Runtime类

    认识 Runtime类

    在每一个JVM进程中都会存在一个Runtime类,这个类的主要功能是取得一些与运行时有关的环境属性或创建进程等操作。

    在Runtime类定义的时候,它的构造方法就已经被私有化了,属于单例设计模式;只有唯一的一个Runtime类的对象,所以在Runtime类里面提供了一个static型方法,这个方法可以取得Runtime的实例对象。

    getRuntime() 方法

    • 取得Runtime类的实例化对象

    内存操作方法

    totalMemory()

    • 返回所有可用的内存空间
    public long totalMemory() ;
    

    maxMemory()

    • 返回最大可用的内存空间
    public long maxMemory() ;
    

    freeMemory()

    • 返回空余内存空间
    public long freeMemory() ;
    

    实例观察

    public class TestDemo {
    	public static void main(String [] args) {
    		Runtime run = Runtime.getRuntime() ; //取得Runtime类的实例化对象
    		System.out.println("MAX   =" + run.maxMemory()) ;
    		System.out.println("TOTAL =" + run.totalMemory()) ;
    		System.out.println("FREE  =" + run.freeMemory()) ;
    	}
    }
    
    // 运行结果:
    MAX   =933232640
    TOTAL =58720256
    FREE  =56327376
    
    • 产生内存垃圾
    public class TestDemo {
    	public static void main(String [] args) {
    		Runtime run = Runtime.getRuntime() ; //取得Runtime类的实例化对象
    		System.out.println("MAX   =" + run.maxMemory()) ;
    		System.out.println("TOTAL =" + run.totalMemory()) ;
    		System.out.println("FREE  =" + run.freeMemory()) ;
    		System.out.println("==============================");
    		String str = "" ;
    		for (int i = 0; i < 22222 ; i++) {
    			str += i ;  //制造垃圾
    		}
    		System.out.println("MAX   =" + run.maxMemory()) ;
    		System.out.println("TOTAL =" + run.totalMemory()) ;
    		System.out.println("FREE  =" + run.freeMemory()) ;
    		System.out.println("==============================");
    		run.gc();  // gc()方法,释放内存中的垃圾
    		System.out.println("MAX   =" + run.maxMemory()) ;
    		System.out.println("TOTAL =" + run.totalMemory()) ;
    		System.out.println("FREE  =" + run.freeMemory()) ;
    		System.out.println("==============================");
    	}
    }
    // 运行结果:
    ==============================
    MAX   =933232640
    TOTAL =58720256
    FREE  =56327416
    ==============================
    MAX   =933232640
    TOTAL =381681664
    FREE  =157595056
    ==============================
    MAX   =933232640
    TOTAL =8388608
    FREE  =7307560
    ==============================
    
    • ps:gc() 方法,可以清理内存中留有的垃圾

    GC 处理器

    • GC (Garbage Collector),垃圾收集器;指的是释放无用的垃圾内存空间

    • GC 会由系统不定期进行自动的垃圾回收,或调用Runtime类中的GC()方法来手工释放(回收)

    有趣小功能—exec()方法

    Runtime类有一个功能,可以调用本机的可执行程序并创建一个进程

    • 执行程序:
    public Process exec (String command) throws IOException ;
    
    • 示范:
    import java.io.IOException;
    
    public class TestDemo {
    	public static void main(String [] args) throws IOException {
    		Runtime run = Runtime.getRuntime(); 
    		Process pro = run.exec("mspaint.exe"); //调用本机可执行程序(画板)
    		System.out.println(pro);
            // pro是exec执行后返回的一个进程ID信息
            Thread.sleep(20000); // 延迟 20000 ms
    		pro.destroy(); // 销毁进程
    	}
    }
    // 执行结果:
    Process[pid=6832, exitValue="not exited"]
    

    Process() 是一个进程的创建方法,exec()执行后,会返回进行信息,由进程方法Process接收为 pro ,故 pro 可以处理进程。

  • 相关阅读:
    IIS状态监测(如果状态错误则重启IIS)
    解决Android8.0之后开启service时报错IllegalStateException: Not allowed to start service Intent ...
    AndroidStudio 代码(导入类)报错但可正常运行,以及解决此问题后带来的系列问题解决
    No service of type Factory<LoggingManagerInternal> available in ProjectScopeService
    Android集成Google地图详细步骤记录
    Android应用图标微技巧,8.0系统中应用图标的适配
    recyclerView插入(add)和删除(remove)item后,item错乱,重复,覆盖在原recyclerView上
    Gradle依赖的统一管理,解决依赖冲突
    在博客添加网页背景动画效果,跟随鼠标移动的线条
    greendao引起的NoClassDefFoundError异常解决
  • 原文地址:https://www.cnblogs.com/wangyuyang1016/p/11094465.html
Copyright © 2020-2023  润新知