论坛首页 入门技术论坛

静态变量和静态块这样使用有什么后果

浏览 1570 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-11  
在类中我这样使用该类不变的几个参数,因为考虑到该类可能产生多个实例,为了节省
内存而使用了静态常量和静态块来对该静态常量进行初始化:
public class exampleA {
// 需要设置权限按钮的函数列表
final static List methodsList = new ArrayList();
// 初始化需要设置按钮权限的函数列表
static {
// 获取处理流程页面
methodsList.add(new String("AssignedDetail"));
// 修改
methodsList.add(new String("forupdate"));
methodsList.add(new String("update"));
// 分配
methodsList.add(new String("getAssignedJsp"));
methodsList.add(new String("updateassigned"));
// 处理
methodsList.add(new String("fordeal"));
methodsList.add(new String("deal"));
// 解决
methodsList.add(new String("resolved"));
// 关闭
methodsList.add(new String("getClosedJsp"));
methodsList.add(new String("closedForAppraisalAndinsertKn"));
methodsList.add(new String("closedAndinsertKn"));
methodsList.add(new String("closed"));
// 升级
methodsList.add(new String("escalateToManager"));
      }
             ......
}

我的同事告诉我,这样使用有可能造成该变量或者成员常驻内存,不如使用非静态的,这样JAVA的垃圾回收器会随时回收使用过的内存,声明成静态的,就不能释放了
   发表时间:2009-03-11  
确实不能释放了,不过数据又不多应该没事,我感觉你用的没错
0 请登录后投票
   发表时间:2009-03-11  
应该没有什么影响,你的数据不多,就几个string而已
但是注意的是不应该往里面添加其他数据,如User对象。。。这样会导致添加的其对象不能被回收。
所以最好是用泛型

另外,如果真的在意那么点空间,可以卸载exampleA 类。就可以回收内存了
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics