java垃圾回收和收尾

垃圾回收机制:当一个对象不再被引用时,或者说当一个对象的引用不存在时,我们就认为该对象不再被需要,它所占用的内存就会被释放掉。
    垃圾回收只是在程序执行过程中偶尔发生,java不同的运行时刻会产生不同的垃圾回收办法,对于我们通常所写的大部分程序不需要考虑垃圾回收问题。
    可以调用System.gc方法强制垃圾回收,但是这个方法也不是在调用时就立即进行垃圾回收,而是一样带有不确定时间性。
    finalization:java中的收尾机制,就是在java中有的时候当一个对象要被撤销时还需要进行一些其他的必要操作,那么就要用到这一机制,用到finalize()方法。
    如果定义了finalize()方法,那么java在回收该类的一个对象时就会调用这个方法。在finalize中要指定回收前要进行的操作。finalize正好在垃圾回收之前被调用,也就一样的具有了时间的不确定性,所以在程序中一般要采用其他的办法来释放资源。
    在编程中,我们要尽早的释放掉无用的引用,通常,在使用临时变量的时候,都是让引用变量在退出活动域以后,自动变成null,从而暗示垃圾收集器来收集。
    java中把内存分为两种,堆内存和栈内存:栈中存储的是基本类型以及引用类型的引用,里边的数据具有特定的大小和生存期,存取速度快,数据可以共享;堆中存储的是对象,可以动态分配内存大小,也不必事先告诉编译器生存期,垃圾回收器会自动回收不用的内存,因为它要在运行时动态的分配内存,所以存取速度慢,但是更加灵活。
    通俗的比较,堆是用来存放对象的,栈是用来执行程序的。

你可能感兴趣的:(java垃圾回收和收尾)