貌似  s == new Systeminfo();  不能这样写。这和内存回收 有关系吗??

解决方案 »

  1.   

    1. 这些和内存回收没什么关系,除非手动释放内存,不然,你无法估计什么时候对实例执行垃圾回收;
    2. 1和3一样吧?性能上,只能说,2方法因为一开始访问类的时候就创建Systeminfo实例,所以,内存在会一开始就有这个实例,不管用没用到。1,3是延迟创建实例。 至于要想2那样一开始就创建,还是像1,3那样延迟创建,看你需要。
    2.1 如果创建Systeminfo实例比较耗时,或者说Systeminfo实例实例只是在少数方法内部作为局部变量被创建和访问,那么可以使用延时创建,因为没必要一开始就把内存占着;
    2.2 如果Systeminfo实例会作为类的成员变量来使用,类里面多个方法的运行都依赖这个实例,那可以考虑一开始就创建。3.看你的代码,可能和计时器有关系,可能是定时获取系统信息的,所以我觉得应该用2方法。至于为什么你是ethod调timer什么的就不清楚你的思路了。
      

  2.   

    另外,说漏一点,就是如果1,3方法,每当方法实例的method方法被触发,就会new一个Systeminfo。这样如果你的method,被经常调用的话,就会创建多个Systeminfo实例。 而2不会,因为一个实例对应一个Systeminfo实例。
    所以,2应该更好。