认识System类
System类是一些与系统相关属性和方法的集合,而且在System类中所有的属性都是静态的,直接使用System类就可以调用这些属性和方法。
方法定义 | 类型 | 描述 |
---|---|---|
public static void exit(int status) | 普通 | 系统退出,如果status为非0表示退出 |
public static void gc() | 普通 | 运行垃圾回收机制,调用的是Runtime类中的gc方法 |
public static long currentTimeMillis() | 普通 | 返回以毫秒为单位的当前时间 |
public static Properties getProperties() | 普通 | 取得当前系统的全部属性 |
public static String getProperty(String key) | 普通 | 根据键值取得属性的具体内容 |
【取得本机的全部属性】
public class SystemDemo01
{
public static void main(String[] args){
System.getProperties().list(System.out);
}
}
【获得特定的系统属性】
public class SystemDemo02
{
public static void main(String[] args){
System.out.println("系统名称:"+System.getProperty("os.name"));
System.out.println("系统版本:"+System.getProperty("os.version"));
}
}
垃圾对象的回收
Java中有垃圾的自动收集机制,可以不定期地释放Java中的垃圾空间,而且在Runtime类时也已经了解了如何进行垃圾空间的释放。在System类中也有一个gc()方法,此方法也可以进行垃圾的收集,而且此方法实际上是对Runtime类中的gc()方法的封装,功能与其类似。
但是在此处讲解的是如何对一个对象进行回收,一个对象如果不再被任何栈内存所引用,那么此对象就可以成为垃圾对象,等待回收。实际上,等待的时间不确定,所以直接调用System.gc()方法进行垃圾的回收。
一个对象在回收前会执行
protected void finalize() throws Throwable
一个子类只需要覆写此方法即可在释放对象前进行某些操作。
class SystemDemoPerson
{
private String name;
private int age;
public SystemDemoPerson(String name,int age){
this.name=name;
this.age=age;
}
public String toString(){
return "nam"+this.name+" age"+this.age;
}
public void finalize() throws Throwable{
System.out.println("对象释放-->"+this);
}
}
public class SystemDemo03
{
public static void main(String[] args){
SystemDemoPerson per=new SystemDemoPerson("aotu",12);
per=null;
System.gc();
}
}
对象的生命周期
一个类加载后进行了初始化,然后就可以进行对象的实例化,对象实例化会调用构造方法完成,当一个对象不再使用时就要等待被垃圾收集,然后对象终结,最终程序卸载。