JAVA进阶(Runtime类与System类)

一,Runtime类

  • 在每个jvm进程中都会存在一个仅且一个Runtime类的对象,Runtime类的构造方法被私有化 ----单例设计模式----在Runtime类中存在一个static类型的方法用于取得Runtime类的对象----public static Runtime getRuntime()
  • Runtime主要功能是创建新的进程操作或取得一些与运行时有关的环境属性
  • 返回最大可用内存public native long maxMemory() long类型的一用于返回日期或者内存
  • public void gc()用于释放垃圾空间,gc(garbage collector)垃圾收集器,释放无用的内存空间,由系统不定期的自动回收或者手工回收
  • Runtime类可以调用本机的可执行程序并创建进程
package RunTime类;
public class RuntimeDemo {
    public static void main(String[] args) {

        Runtime run = Runtime.getRuntime();
        System.out.println("未产生垃圾前:");
        System.out.println("最大可用内存:"+run.maxMemory()+"Byte");
        System.out.println("所有可用内存:"+run.totalMemory()+"Byte");
        System.out.println("空余内存:"+run.freeMemory()+"Byte");

        String str  = null;
        for (int i = 0; i < 2000; i++) {
            str += i;
        }
        System.out.println("产生垃圾后:");
        System.out.println("最大可用内存:"+run.maxMemory()+"Byte");
        System.out.println("所有可用内存:"+run.totalMemory()+"Byte");
        System.out.println("空余内存:"+run.freeMemory()+"Byte");

        run.gc();
        System.out.println("清理垃圾后:");
        System.out.println("最大可用内存:"+run.maxMemory()+"Byte");
        System.out.println("所有可用内存:"+run.totalMemory()+"Byte");
        System.out.println("空余内存:"+run.freeMemory()+"Byte");

        
    }
}

在这里插入图片描述

package RunTime类;
public class RuntimeDemo {
    public static void main(String[] args) throws Exception{

        Runtime run = Runtime.getRuntime();
         //开启画图软件
        Process p = run.exec("mspaint.exe");
        //停顿5s
        Thread.sleep(5000);
        //关闭画图软件
        p.destroy();
    }
}

二,System类

  • System类的常用方法:
    • public static void arraycopy(Object src, int srcPos,Object dest, int destPos,int length);用于数组拷贝
    • public static long currentTimeMillis()取得系统当前时间
    • public static void gc() 这个gc()并不是System新定义的方法,而是间接调用了Runtime类的gc()方法
  • 对象的产生一定会调用构造函数,进行一些处理操作,但是对象被回收时,却是悄无声息的,无人知晓,如果给对象一个说遗言的机会可以覆写Object类中的finalize()方法,该方法用于对象回收前的收尾工作,类似于c++的析构函数
package System类;
public class SystemDemo {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        String str = "";
        for (int i = 0; i < 3000; i++) {
            str += i;
        }
        long end = System.currentTimeMillis();
        System.out.println("程序运行时间:"+ (end-start)+"ms");

    }

}

在这里插入图片描述

package System类;
class birthTodie
{
   public birthTodie()
   {
       System.out.println("----我出生了----");
   }

    @Override
    protected void finalize() throws Throwable {
        System.out.println("----我的生命终结了----");
    }
}

public class SystemDemo {
    public static void main(String[] args) {
        birthTodie baby = new birthTodie();
        baby = null;//产生垃圾了
        System.gc();//手工进行垃圾回收
    }

}

在这里插入图片描述

比较final,finally,finalize:

  • final关键字 定义不能被继承的类,不能被覆写的方法,常量
  • finally关键字 异常处理的统一出口
  • finalize Object类提供的方法(protected void finalize() throws Throwable)指的是对象回收强前的收尾方法,即使出现了异常也不会导致程序中断执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值