java析构的一个奇怪现象

定义了一个DAO,观察java构造和析构的次数,按理最后的输出应为0,但却是-1,不知道为何?
代码如下:

@Stateless
public class MemberDAO
{
        @Inject
        private Logger log;
        volatile static int __count__;

        protected void finalize(){
                __count__--;
                log.info("--MemberDAO count:" + __count__);
        }

        @PostConstruct
        public void initialize(){
                __count__++;
                log.info("++MemberDAO count:" + __count__);
        }
} 

输入结果如下:

INFO  [org.agi.hcms.dao.MemberDAO] (default task-90) ++MemberDAO count:1
INFO  [org.agi.hcms.dao.MemberDAO] (default task-90) ++MemberDAO count:2
INFO  [org.agi.hcms.dao.MemberDAO] (Finalizer) --MemberDAO count:1
INFO  [org.agi.hcms.dao.MemberDAO] (Finalizer) --MemberDAO count:-1  

在Log中增加一个instanceid的字段,每次构造函数传一个随机数给它。看看是否在析构函数中配对。