zoukankan      html  css  js  c++  java
  • Java System类、RunTime类、Object类、垃圾回收

    System类

    System类代表当前操作系统,System类提供了静态方法getProperty(String  key)获取指定的环境变量、系统属性。

    System.in表示标准输入,通常是键盘

    System.out表示标准输出,通常是显示器


    Runtime类

    Runtime类代表当前Java程序的运行时环境。每个Java程序都有一个与之对应的Runtime实例。

    Runtime类可以获取JVM的相关信息:

    //获取运行时对象
            Runtime rt=Runtime.getRuntime();
            //获取可用最大内存数,可用最大内存数远远大于总内存数
            System.out.println(rt.maxMemory());
            //获取总内存数
            System.out.println(rt.totalMemory());
            //空闲内存数
            System.out.println(rt.freeMemory());

    以上信息均为JVM的信息,并非OS的信息。

    Runtime类可以直接启动一个单独的进程,来执行一个程序:

    //获取运行时对象
    Runtime rt=Runtime.getRuntime();
    //如果path环境变量中有该路径,直接写程序文件名即可(比如系统自带的记事本)
    rt.exec("notepad.exe");
    //如果path环境变量中没有该路径,则必须写绝对路径
    rt.exec("C:\Program Files (x86)\360\360zip\360zip.exe");

    Object类

    Object类是所有类的基类。

    Object类的方法:

    boolean equals(Object obj)    判断两个对象是否相等,根据内存地址来判断,相当于==。String类重写了此方法,字符串相同,就认为两个对象相等。

    int  hashCode()    返回该对象的hash码值,根据地址计算,地址相同(指向内存中的同一个对象)的hash码值才相同。引用型变量才有此方法。

    但很多类都重写了hashCode()方法,只要两个对象的值相同,就认为hashCode相同,和String的equals()差不多。

    Object类提供了一个clone()方法,用于clone对象。此方法是protected,只能被子类继承、重写。

    实现对象的克隆:

    //需要实现Cloneable接口

    class Test implements Cloneable{
    //.......其他成员

    //实现clone方法,返回值为本类的对象
    public Test clone() throws CloneNotSupportedException {
    //调用基类的clone()实现克隆,但返回值是Object类型,需要强制类型转换
    return (Test)super.clone();
    }
    }

    class test1{
      Test test1=.......; //创建一个对象
      Test test2=test1.clone();
    }

     这只是一种浅克隆,返回该对象的一个副本,简单地复制该实例变量的值,如果是引用类型,复制的是该引用,即指向内存中的同一个对象。比系统默认的clone方法效率要高得多。


    强制系统进行垃圾回收的两种方式:

    1、使用System类的静态方法:
    System.gc();

    2、先使用Runtime的静态方法getRuntime()获取实例对象,再使用Runtime实例的实例方法:gc()
    Runtime.getRuntime().gc();

    均只是通知系统进行垃圾回收,系统是否进行垃圾回收并不确定,但大部分时候都会有所效果。

  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    你会卖掉自己的网上信息吗?大数据可能根本不属于你
    机器学习——TensorFLow实战房价预测
    数据库运作实践三三之歌(秘制口诀)
    1000行MySQL学习笔记,收藏版!
    吐血整理深度学习入门路线及导航【教学视频+大神博客+书籍整理】+【资源页】(2019年已经最后一个月了,你还不学深度学习吗???)
    Ubuntu Snap 简述
    参数传递
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/10853471.html
Copyright © 2011-2022 走看看