Java学习总结:32(Runtime类)

Runtime类

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

Runtime类的常用方法

No.方法类型描述
1public static Runtime getRuntime()普通取得Runtime类的实例化对象
2public long maxMemory()普通返回最大可用内存大小
3public long totalMemory()普通返回所有可用内存大小
4public long freelMemory()普通返回所有空余内存大小
5public void gc()普通执行垃圾回收操作
6public 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的画板)进程

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();							//销毁进程
    }
}

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值