日期:2014-05-20  浏览次数:20759 次

关于final类及static方法的调用
请问,我定义了一个类是final类,定义的方法是static。N多个外部的类的实例调用这个final类的static方法,会有问题吗?之前一个朋友用.net开发的时候这样定义类,好像内存容易泄露。

------解决方案--------------------
final类和普通类的区别就是:定义为final的类,不能被继承
------解决方案--------------------
这个内存泄漏是正常的! 如果单单是final的话是没问题的! 关键就出在这个static上。
我访问过了这个类,我进行了一些操作,然后暂停,这个时候这个类就记录了我的这个状态,这时候别人又去访问,但他想访问的是初始的类,不是这个类,但是这个类现在已经改变,所以出现内存泄漏很正常。
------解决方案--------------------
除非就是加锁,不过这样的话效率会大大降低!
------解决方案--------------------
访问static方法不会有什么问题的吧。
如果用到共享资源,注意下同步就行了。
------解决方案--------------------
内存泄露与类和方法的组织方式无关,如果在方法中使用了必须关闭的资源而没有关闭,这个问题依然会存在
------解决方案--------------------
如果是静态类且有大量的数据访问,可能会出现内存溢出,但是这要根据实际情况而定,一般不会出现这个问题。内存问题是可以忽略的,不用咱们考虑
如果是final类且是静态方法,静态方法就是全局方法 静态方法:所有占据一个内存 
访问全局变量肯定会出现并发问题,静态方法本身就存在异常问题
静态方法内部的变量,都是局部变量,每次调用静态方法时都会重新分配内存空间,所以是安全的