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

请问 List的生命周期是怎么样的?
今天 突然想到的一个问题一个List或者一个Set等的生命周期是怎么样的,突然感觉很奇怪,他会不会像request、session等有作用域呢?

------解决方案--------------------
如果说List对象有没有生命周期这个说法不严谨,但是ArrayList,HashSet等是没有这个概念的,根据你的引用作用域来的,只要有引用指向都有效。但是如果你自己实现一个List,那你完全可以设置生命周期的,例如你可以设置你的List里面的对象每隔5S定时清除。
------解决方案--------------------
这jdk的东西生命周期直到垃圾回收器把它回收为止
------解决方案--------------------
我觉得之所有不把List和Set的生命周期抽象出来是因为它们的生命周期会因为程序的不同而不同,不同程序中的List的生命周期不一样,因为JVM回收内存很不确定,有时候即使生成的对象已经没有引用指向了,JVM也不一定就将List回收了。
------解决方案--------------------
生命周期和一般对象一样没区别。但list是个容器,所以只要list还没出作用域,它内部的对象就永远不会被GC回收。这才是要注意滴,所以一旦list或其他的容器不再使用,要注意把引用置空。不同于C/C++的free/delete,这并不会强制回收内存,仅仅是通告虚拟机这个list的引用和这个list内一堆元素的引用都失效了。