定义了一个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