static 引发的BUG

        在室内地图引擎 SDK开发中,今天突然碰到了一个BUG,一查由于前几天不知道怎么脑抽筋的,在一些类中加了private 的static的变量和使用单例模式时static类对象造成的。原因是销毁了某个类对象后,其类中的static变量还存在,并没有被销毁 (static变量不属于类成员),等下次进来的时候,存在冲突。

        慎重使用static变量。

        使用静态变量要特别注意,因为他们“不受控制”,很容易产生BUG。可能会为了方便定义一些static集合变量,最后当集合比较大时,造成内存溢出;可 能会在类中定义static变量,把它当成类的成员属性,在销毁类对象时,没有手动是释放它(置null),下次使用时与上一次的static变量冲 突......当发生这些错误发生在你身上时,只能说明你还不合格。所以我还不合格。

        注意“单例模式”。

        在 某些情况下,你可能设计了某个类对象为“单例模式”,来为一个模块提供一个“桥梁”,然而这并不是所谓的“全局”。当经过某些操作时后,退出了使用此单例 对象的功能模块,然后又进入之,此时需要重新生成单例对象,你会发现还是上次那个对象,而这不是我们需要的。原因就是上次退出那个功能模块时,没有释放掉 “单例”对象(这种情况必须手动清理)。所以所谓的“单例模式”,还需考虑范围的,使用时需要注意。

        总结:使用static时,多思考,能不用就别用,这东西不是好东西。

       

转载于:https://my.oschina.net/u/1257439/blog/543394

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值