Java学习总结:32(Runtime类)

Runtime类

该类用于表示虚拟机(JVM)运行时的状态,每次启动JVM都对应一个Runtime实例,且只有一个实例,利用Runtime类可以启动新的进程或进行相关运行时环境的操作。此外,该类采用单例模式设计,对象不可以直接实例化。所以,取得Runtime实例化对象的的方法为:public static Runtime getRuntime()

Runtime类的常用方法

No. 方法 类型 描述
1 public static Runtime getRuntime() 普通 取得Runtime类的实例化对象
2 public long maxMemory() 普通 返回最大可用内存大小
3 public long totalMemory() 普通 返回所有可用内存大小
4 public long freelMemory() 普通 返回所有空余内存大小
5 public void gc() 普通 执行垃圾回收操作
6 public Process exec(String command)throw IOException 普通 创建新的进程

注意:取得内存信息时,返回的数据为long

例:观察内存大小

package Project.Study.RuntimeClass;

public class Test1 {
    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=2111832064
//TOTAL=132120576
//FREE=129517640

本程序动态取得当前系统中的各个内存空间信息,返回的结果单位是字节(Byte)。

值得注意的是,我们可以设置启动时的内存大小
Java中的内存划分:Java中内存的划分

每一块内存空间都会存在一个内存伸缩区,当内存不足时就会动态开辟。我们可以使用以下参数申请内存空间:
“-Xms”:初始分配内存,默认大小为1/64物理内存大小,但小于1G;
“-Xmx”:最大分配内存,默认大小为1/4物理内存大小,但小于1G;
“-Xmn”:设置年轻代堆内存大小。
一般会将“-Xms”和“-Xmx”两个参数的数值设为相同,以减少申请内存空间的时间。

gc()方法的使用

gc()方法可以实现垃圾内存释放的处理操作

例:观察gc()方法的使用

package Project.Study.RuntimeClass;

public class Test2 {
    public static void main(String[]args){
        Runtime run=Runtime.getRuntime();	//取得Runtime类的实例化对象
        String str="";
        for(int x=0;x<2000;x++){	//进行循环操作,产生大量垃圾,占用内存
            str+=x;
        }
        System.out.println("【垃圾处理前的内存量】MAX="+run.maxMemory());
        System.out.println("【垃圾处理前的内存量】TOTAL="+run.totalMemory());
        System.out.println("【垃圾处理前的内存量】FREE="+run.freeMemory());
        run.gc();	//释放垃圾空间
        System.out.println("[垃圾处理后的内存量]MAX="+run.maxMemory());
        System.out.println("[垃圾处理后的内存量]TOTAL="+run.totalMemory());
        System.out.println("[垃圾处理后的内存量]FREE="+run.freeMemory());
    }
}
//结果:
//【垃圾处理前的内存量】MAX=2111832064
//【垃圾处理前的内存量】TOTAL=132120576
//【垃圾处理前的内存量】FREE=122711832
//[垃圾处理后的内存量]MAX=2111832064
//[垃圾处理后的内存量]TOTAL=10485760
//[垃圾处理后的内存量]FREE=9292944 (???)

关于垃圾回收处理和对象创建
对象创建流程

Runtime类有一个有意思的功能,可以通过它调用本机的可执行程序,并创建进程。

例:创建“mspaint.exe”(Windows的画板)进程

扫描二维码关注公众号,回复: 10995084 查看本文章
package Project.Study.RuntimeClass;

public class Test3 {
    public static void main(String[]args) throws Exception {
        Runtime run=Runtime.getRuntime();		//取得Runtime实例化对象
        Process pro=run.exec("mspaint.exe");	//调用本机可执行程序
        Thread.sleep(2000);						//运行2s后自动关闭
        pro.destroy();							//销毁进程
    }
}

效果:
在这里插入图片描述

发布了49 篇原创文章 · 获赞 25 · 访问量 1515

猜你喜欢

转载自blog.csdn.net/weixin_45784666/article/details/105181191