第一,谈谈final, finally, finalize的区别。最常被问到。 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 第三,Static Nested Clas...
分类:
编程语言 时间:
2015-05-13 10:03:55
阅读次数:
291
释放类所使用的未托管资源的两种方式: 1.利用运行库强制执行的析构函数,但析构函数的执行是不确定的,而且,由于垃圾收集器的工作方式,它会给运行库增加不可接受的系统开销。 2.IDisposable接口提供了一种机制,允许类的用户控制释放资源的时间,但需要确保执行Dispose()。一般情...
第五章 初始化与清理(二)5.5 清理:终结处理和垃圾回收 清理的工作常常被忽略,Java有垃圾回收器负责回收无用对象占据的内存资源。但也有特殊情况:假定对象(并非使用new)获得了一块”特殊”的内存区域,由于垃圾回收器只知道释放那些由new分配的内存,所以不知道如何释放特殊内存。Java允许在类中定义一个名为finalize()的方法,工作原理”假定”是这样的:一旦垃圾回收器准备好释放对象占...
分类:
编程语言 时间:
2015-05-05 14:34:52
阅读次数:
269
1、资源对象没有关闭造成内存泄露
资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们,以便它们的缓冲及时回收内存。它们的缓冲不仅存在于java虚拟机内,还存在于java虚拟机外。如果我们仅仅是把它的引用设置为null,而不关闭它们,往往会造成内存泄漏。因为有些资源性对象,比如SQLiteCursor(在析构函数finalize(),如果我...
分类:
移动开发 时间:
2015-04-29 11:37:28
阅读次数:
164
前面“终结操作解密”讲过,需要终结一个对象被认为死亡时,垃圾回收器会强制对象重生,使它的Finalize方法得以调用。Finalize方法调用之后,对象才真正死亡。总之,需要终结的一个对象会经历死亡、重生、再死亡的“三部曲”。一个死亡的对象重生的过程称为复活。准备调用对象的Finalize方法,这是...
分类:
其他好文 时间:
2015-04-21 20:33:01
阅读次数:
174
final、static、finally、finalize的比较
final关键字
1、final修饰类,表示该类不能被继承,因此,一个类不能同事被声明为abstract抽象类和final的类;
2、final修饰变量,则该变量必须赋初值,而且它的取值在整个过程都不会改变;
3、final修饰方法,称为最终方法。它不可被子类重新定义,即不可被覆盖,也不能被重...
分类:
其他好文 时间:
2015-04-16 15:48:08
阅读次数:
160
1、DDMS中可以看见的系统线程(Andorid3.1的Galaxy Tab 10.1为例):mainHeapWorker 执行finalize函数和引用对象清理GC Garbage Collector垃圾收集Signal Catcher 捕捉Linux信号进行处理JDWP ...
分类:
移动开发 时间:
2015-04-15 16:53:50
阅读次数:
244
/**
* 书本:《Thinking In Java》
* 功能:关于finalize()的调用
* 文件:TerminationCondition.java
* 时间:2014年10月6日17:49:09
* 作者:cutter_point
*/
package Lesson5InitializationAndCleanUp;
class Book
{
boolean checkedOut...
分类:
编程语言 时间:
2015-04-13 18:56:44
阅读次数:
213
C#中system.object的函数方法功能介绍在C#中,Object类型是所有类型的根,大家平常开发中都要跟它打交道,但不见得对它里面的每个方法都知根知底,下面对它里面的每个方法都进行仔细的总结。概述:构造函数Equals函数Finalize函数GetHashCode函数GetType()函数R...
final成员:(1)在类中定义变量时,当用final修饰时,说明此变量一旦被初始化便不可变,基本类型值不可变,对象变量是引用不可变。其初始化可以在两个地方:一个是其定义处,一个是在构造函数中,二者只能选其一。(2)定义方法中的参数为finalfinal方法:不允许子类重写(override)此方法...
分类:
其他好文 时间:
2015-04-09 15:10:08
阅读次数:
174