认识-----System类与垃圾对象的回收

来源:互联网 发布:俄罗斯重工业知乎 编辑:程序博客网 时间:2024/05/17 04:27

System类

认识System类:

①System类是一些与系统相关属性和方法的集合,而且在System类中所有的属性和方法都是静态的。

②利用System类可以计算一个程序的执行时间,也可以取得本机的全部环境属性或者指定属性。

计算程序的执行时间:

package demo; public classSystemDemo01 {     /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        long startTime = System.currentTimeMillis();        int sum = 0;        for (int i = 0; i < 30000000;i++) {            sum+= i;        }        long endTime = System.currentTimeMillis();        System.out.println("计算所花费的时间:" + (endTime - startTime) + "毫秒");    } }


取得本机的全部属性

package demo; public classSystemDemo02 {     /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        System.getProperties().list(System.out);    } }


列出本机的指定属性:

package demo; public classSystemDemo03 {     /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        System.out.println("系统版本为:" + System.getProperty("os.name")                +System.getProperty("os.version")                +System.getProperty("os.arch"));       // 获取当前系统的架构        System.out.println("系统用户为:" + System.getProperty("user.name"));        System.out.println("当前用户目录:" + System.getProperty("user.home"));        System.out.println("当前用户工作目录:" + System.getProperty("user.dir"));    } }


③垃圾对象的回收

System类中存在一个gc方法,它实际上是对Runtime类中的gc()方法进行封装,也可以进行垃圾的收集。

如果一个对象被回收之前需要进行某些操作,则应该覆写Object类中的finalize()方法。

实例演示:

package demo;public class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "姓名:" + this.name + ",年龄:" + this.age;}@Overrideprotected void finalize() throws Throwable { // 对象释放空间时默认调用此方法// TODO Auto-generated method stubSystem.out.println("对象被释放-->" + this); // 直接打印对象调用toString}}


package demo; public classSystemDemo04 {     /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        Personper = newPerson("张三", 30);        per= null;                         // 断开引用,释放空间        //System.out.println(Runtime.getRuntime().freeMemory());        System.gc();                        // 强制性释放空间        //System.out.println(Runtime.getRuntime().freeMemory());    } }


从这个例子,可以总结出对象的生命周期,如:


0 0