当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 清理:终结与垃圾回收这里要明白这么几点1、垃圾回收器只能回收由new产生的对象,如果你使用或产生了非new产生的对象,垃圾回收器是不知道如何把他清理掉的。
 

 

 ·northwind中一个特别之处    »显示摘要«
    摘要:通常当我们要把数据库中存放的图片显示出来的步骤,是先从数据库中读取出二进制数据。将这些数据赋给一个字节数据,然后再将字节数据读取到内存流,再通过image对象的fromstream方法,转换成图片。最后赋给图片框。 但是对于northwind数据库中的employees表中的photo字段,好象这个方法无能为力。其实不是我们的方法不对。而是因为此字段前78个字段并不是图片的数据。所以我们只要跳过......
    摘要:java虚拟机体系结构概述(一)--《深入java虚拟机》学习笔记 java虚拟机之所以称为“虚拟”,就是因为它仅仅是由一个规范来定义的抽象计算机。要运行某个java程序,首先需要一个符合该规范的具体实现。下面主要讨论这个规范本身。 java虚拟机是什么 要理解java虚拟机,你必须意识到,当你说“java虚拟机”时,可能指的是如下三种不同的东......


我的Thinking in Java学习笔记(七)

      清理:终结与垃圾回收

        1.垃圾回收器只能回收由new产生的对象,如果你使用或产生了非new产生的对象,垃圾回收器是不知道如何把他清理掉的 .这个时候就要使用到finalize(). 【程序编程相关:几个简单常用的算法

        这里要明白这么几点 【推荐阅读:用VS.NET2003制作MSI安装程序

        3.finalize()是不会在对象销毁的时候自动唤起的.假设有一个对象在产生的过程中将自己绘制在屏幕之上.你要是没有手动的把他清理掉,那么他永远会在那里,而如果你将清理屏幕的功能放在finalize()之中,那么当这个对象被垃圾回收器回收之前,他在屏幕上的影象会先被清除 【扩展信息:The Programming Lang

        2.垃圾回收器的运做方式是这样的,当垃圾回收器打算开始释放你的对象所占用的资源时,会先调用finalize(),并且在下一次垃圾回收动作放生的时候才回收该对象所占用的资源,如果使用finalize(),他便会让你得以在垃圾回收的时候执行你自己的清理动作

        4.你的对象永远可能都不会被回收,因为你的程序并没有把系统资源占用到需要垃圾回收器出马的状态,你所占用的系统资源会在程序结束运行的时候全部释放,那么你就不用付出垃圾回收器运行的额外系统开支.

        finalize()存在是为了什么?

         要知道,finalize()不是用于一般的清理工作,垃圾回收器回清理那些使用new产生的对象,而那些非常规方法(c/c++原生函数)产生对象才会需要

 finalize()来进行清理工作.既然这样,我们就不应该大量的使用finalize(),因为他不是摆放常规清理动作的执行场所.

        你必须执行清理动作

          那么那里才是正常清理动作的执行场所呢?

          在c++中,当对象以stack中创建得时候,那么有一个叫析构的函数会自动的在该对象产生地点所在的大括号范围结束前自动调用,如果这个对象是以new的方式从heap中创建的话,那么就必须调用delete运算符才能清理对象.而java不允许对象从stack中创建,你一定得用new从heap中创建对象才行,但是java并没有delete运算符,而是靠的是垃圾回收器来清理对象,所以,我们可以说,既然java中有了垃圾回收器,也就不需要析构函数.但是垃圾回收器毕竟不是析构函数,他无法代替析构函数的作用.
...   下一页
 ·一份c语言函数清单    »显示摘要«
    摘要:http://www.phim.unibe.ch/comp_doc/c_manual/c/functions/funcref.htm this is a summary of ansi and posix functions grouped by library. if you want an alphabetical list, please use the master ind......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE