1、好久没看关于java的书了, 最近, 看了James Gosling的, 做了一些读书笔记.这部分是关于垃圾回收的.1.垃圾回收对象是使用new创建的, 但是并没有与之相对应的delete操作来回收对象占用的内存. 当我们完成对某个对象的使用时, 只需停止该对象的引用:-将引用改变为指向其他对象-将引用指向null-从方法中返回, 使得该方法的局部变量不复存在要点:-当我们从任何可执行代码都无法到达某个对象时, 它所占用的空间就可以被回收.-垃圾回收意味着我们永远不用担心出现虚悬引用(dangling reference). 虚悬引用, 指得是引用已经被删除的内存空间. 在那些程序员可以直接控
2、制何时删除对象的系统中, 会存在这 的 .-垃圾回收 : 引用计 法(不 引用), 记- 除(mark-and-sweep)2. finalize方法-在垃圾回收 该对象是不可达的 该对象的空间将被回收之 , 垃圾回收 就会 用这个方法.-这个方法可以 除该对象所使用的所有 内存 , 对 一个对象最 只 用一 , 使在这个方法的执行使得该对象 变为可达之 会 变为不可达的, 该方法只 用一 .-finalize方法可以在任何 的时间内被 用, 它可 永远不会被 用(java虚currency1 “).finalize方法-当一个对象变成垃圾时, 它所引用的其他对象有可 会变成垃圾. 这些垃圾可
3、 在 用我们fi的finalize方法之fl就已经被 了, 它们可 于不可的 .-finalize方法是, super.finalize方法. 最好在finally”.其 中 的部分内可以被 .3.与垃圾回收 的相关方法: Runtime.getRuntime(), System方法:gc(), runFinalization(), freeMemory(), totalMemory(), maxMemory()System的gc()runFinalization()方法, 它们将 用当flRuntime对象 的相应方法.4.可达 引用对象对象只有在没有任何引用指 它的时可以被当作垃圾回收,
4、但有时我们可 在有 引用指向对象时, 将该对象作为垃圾回收 .引用对象的 一用 就是 对 一个被 为指 (referent)的对象的引用. 我们 局部变量来 对对象的引用, 但是现在我们可以 对引用对象的直接引用, 该引用对象 了我们 需要的对象. 垃圾回收 可 出对某个对象的 引用是 都是经引用对象引用到该对象的, 它可以 是 要回收该对象. 引用对象的将 垃圾回收 的行为, 的引用都是最 的引用.Reference- :java.lang.ref- 方法: get(), clear(), enqueue(), isEnqueued()引用可达 -对象是可达的(strongly reacha
5、ble): 的引用-对象是 可达的(softly reachable):SoftReference-对象是 可达的(weakly reachable):WeakReference-对象是虚可达的(phantom reachable):PhantomReference-对象是不可达的:没有引用 接一对象变为 可达的( ), 它就可以被 . 在 之 该对象是不可达的, 那它就可以被回收了.对象可达 会 垃圾回收 对相关的引用对象 做出当的行为:- 可达对象可 会任垃圾回收 回收. 我们可 的是所有对 可达对象的SoftReference都会在出outofMemoryError 这fl被 除.- 可达对象将会被垃圾回收 回收.-虚可达对象并不是 正意义 的可达, 为无法 PhantomReference访 其指 对象, 其get方法总是返回null. 但是虚引用的存在可以防止对象在显式 除虚引用之fl被回收. 虚引用使我们可以理那些finalize方法已经被 用 的对象, 从 可以安全地认为它们是“死“的.