我想用一个配置文件保存一些配置信息,同时用一个Common类(Common中都是static类型的字符串常量)来保存对应的信息,当服务器启动时,初始化一个Servlet,读取配置信息,并赋值给Common中的相关常量,不知道Common中的static类型的常量什么时候被销毁呢,是不是服务器没有被重启之前它一直都存在呢?

解决方案 »

  1.   

    其实,很明显,static类型的变量的生命周期就是它所属类的生命周期,当类被卸载时,变量的生命周期也就结束了.....
    那么tomcat启动时加载的类,到什么时候卸载呢,肯定是应用被停止的时候,因此,当应用停止时,static类型的变量的内存才被回收不知道这么说是不是准确,请发表一下您的看法:
      

  2.   

    我认为是一直保存 直到server停止
     
    我想可以类比struts 只在服务启动的时候读入配置文件 一直到服务停止前都能按配置 访问跳转如果这些配置的属性不一直存放在内存中 是不能正常工作的 静态常量池GC是不会回收的直到停止JVM   
      

  3.   

    是一直存在的,刚开始学习的时候 不知道有SESSION,我就是用静态变量.
      

  4.   

    我认为主要是下面两个问题:
    (1)服务器什么时候卸载一个Servlet?是不是加载了之后就一直存在,一直到服务器停止才卸载?
    (2)卸载一个Servlet的时候会不会同时卸载这个Servlet里面用到的其他的对象实例?
    期待权威的答案!
      

  5.   

    权威答案:
    static常量在服务器启动后是一直在内存中存在的,只有服务停止,才注销内存。