public class Test{
  static List list=new ArrayList();
}
  一个web项目中.不断往Test类里添加数据库取出的数据.很多类反复循环调用.
  我想问的是Test类的list成员内存何时被回收?存在里面的一些对象何时被回收?
  可能我描述的不清楚.希望高手们给予解答.谢谢

解决方案 »

  1.   

    当Test类执行完以后,会成为GC的对象,但并不马上GC,看他什么时候高兴就GC了.
    结贴吧
      

  2.   

    添加了static后就会变成类变量,它的生命和test应该是一样的的吧
      

  3.   

    没太明白要问什么static 是类变量 或是成员变量
    和对象是平级的 呵呵 
      

  4.   

    个人认为:static变量是类变量,一个进程中java虚拟机只会加载一次这些变量!就算你在进程中NEW N个这个类的对象,但是这些变量只会在第一次NEW的时候加载!这就十分有作用,不会浪费多余的内存!例如:hibernate的sessionFractory!
      

  5.   

    如果程序是放在服务器上运行的,静态的方法或静态的成员变量会不会常驻内存?造成服务器的内存被长期占用而影响速度之类的事情呢?    比如有很多类都调用了Test类的静态成员变量或静态方法。是不Test类第一次被调用时分配静态成员和静态方法的内存空间。其他类再调用Test类的静态成员或方法时是否内存中已经存在了?还是再去分配一次内存?那又是何时回收Test类的静态变量和方法?
      不好意思哦。表述不太清楚。非常的困惑。望高人指点迷津:)
      

  6.   


    除非调用 Test.list.clear, 或者 Test.list.remove等方法, 否则list里面对象占用的内存是不会被回收的。