linugb118--java space

Java

Java中finalize

Java中finalize()
java这个finalize内置方法,估计很多人不会去用途,如果理解这个方法的用法和含义就能做一些可能我们一起认为不能做的事情。
在JAVA中有一种垃圾收集器的机制,当它运行时(通常在系统内存低到一定限度时自动运行),会回收不再使用的对象所占用的内存,所以,在JAVA程序中,我们通常只考虑创建对象,而从不关心对象的清除。Finalize()是JAVA为类提供的一种特殊方法。垃圾收集器的工作过程大致是这样的:一旦垃圾收集器准备好释放无用对象占用的存储空间,它首先调用那些对象的finalize()方法,然后才真正回收对象的内存。通过使用finalize(),就可以在垃圾收集器运行期间进行一些特殊的工作。

你们也就是说,当gc事件启动时候,他是调用对象的finalize(),来实现真正的回收,那么首先这些对象是没有用的,最简单的使用,我可以在finalize()中添加
system.out.print 来跟踪系统的回收了那些对象,可以深层次的了解系统对象的使用情况,比如那些对象回收最频繁等等。

另外我在网上也看到有人这么用finalize(). 主要是统计在线人。这个网上也有很多,本人自己也做过,但是在logout的时候,有三种情况
1.点击程序的logout,这个我们可以监听到。2.去别的网站 3.关闭浏览器。(当然现在第二,第三有些网站也能通过script捕获到,这里我们不谈)
我们假定传统的,session在服务端还是存在的,一般是经过服务器端timeout,自动将这个session的对象失效,那么我们在这些对象调用finalize()做一些
统计就能知道那些人已经离线。
具体这个例子
http://www.qqread.com/java/w712250600.html

这只是一个例子

我想说的是,我们如果理解了finalize的含义和用途,就能在很多地方用好它,未尝不是一种新方式。

posted on 2010-07-16 17:18 linugb118 阅读(1820) 评论(1)  编辑  收藏

Feedback

# re: Java中finalize 2010-07-18 19:52 Agrael

finalize可能造成对象再生,用ref好得多。  回复  更多评论   



只有注册用户登录后才能发表评论。


网站导航:
 

My Links

Blog Stats

常用链接

留言簿(1)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜