在类中我这样使用该类不变的几个参数,因为考虑到该类可能产生多个实例,为了节省
内存而使用了静态常量和静态块来对该静态常量进行初始化:
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的垃圾回收器会随时回收使用过的内存,声明成静态的,就不能释放了

解决方案 »

  1.   

       静态变量在类加载时初始化,在JVM停止时才释放,不过如果是一些简单的东西,放进去也没什么问题,如果是大量的对象就不太好了
      

  2.   

    同时多个实例,不是同时的话就无所谓了
    其实对现在的服务器来说,定义为静态的基本上没什么影响,就只是稍微浪费一点点内存。methodsList.add(new String("forupdate"));
    这句为什么非要new String?
    methodsList.add("forupdate");这样不行吗?这样好一点点儿,呵呵