rootlifeqwer 2015-02-02 12:19 采纳率: 0%
浏览 1485

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  
  • 写回答

1条回答 默认 最新

  • threenewbee 2015-02-02 15:49
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。