finalizervisitor.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 63 行

JAVA
63
字号
/*
 * $Id: FinalizerVisitor.java,v 1.1 2004/02/18 06:59:20 epr Exp $
 */
package org.jnode.vm.memmgr.def;

import org.jnode.vm.ObjectVisitor;
import org.jnode.vm.classmgr.ObjectFlags;
import org.jnode.vm.classmgr.VmClassType;
import org.jnode.vm.classmgr.VmMethod;
import org.jnode.vm.memmgr.HeapHelper;

final class FinalizerVisitor extends ObjectVisitor implements ObjectFlags {

    /** My heap helper */
    private final HeapHelper helper;

    /** The heap that is currently being visited */
    private VmAbstractHeap currentHeap;

    /**
     * Initialize this instance.
     * 
     * @param helper
     */
    public FinalizerVisitor(HeapHelper helper) {
        this.helper = helper;
    }

    /**
     * @see org.jnode.vm.ObjectVisitor#visit(java.lang.Object)
     */
    public boolean visit(Object object) {
        final int color = helper.getObjectColor(object);
        if (color == GC_YELLOW) {
            final VmClassType type = helper.getVmClass(object);
            final VmMethod fm = type.getFinalizeMethod();
            if (fm != null) {
                try {
                    helper.invokeFinalizer(fm, object);
                } catch (Throwable ex) {
                    // Ignore error in finalize
                }
            }
            helper.setFinalized(object);
        }
        return true;
    }

    /**
     * @return Returns the currentHeap.
     */
    public final VmAbstractHeap getCurrentHeap() {
        return this.currentHeap;
    }

    /**
     * @param currentHeap
     *            The currentHeap to set.
     */
    public final void setCurrentHeap(VmAbstractHeap currentHeap) {
        this.currentHeap = currentHeap;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?