关于java类存释放的问题

有个Map是如下定义的
[code="java"]
public class AjaxAction extends Action {
public HashMap map= new HashMap();
}[/code]
请问当AjaxAction这个类被自动回收后,这个public的map所占用的内存是否被释放。
我是怀疑这个map还在占用内存,请仔细考虑。

如果AjaxAction这个类能被自动回收的话,那就相当于是AjaxAction这个类里的成员变量都没有被外部引用,都可以回收了,

但如果map里存放的value被外部对象引用着,那map自然是没法被回收,当然包含map的AjaxAction对象也不能被回收了

map 没有对象引用会被回收.
但是java 的回收机制是不可靠的,有可能AjaxAction 收回了,map 还没有被回收.

一般来说,只要这个对象一直可到达(没有被孤立)那么这个对象一直没有被释放,不过即使孤立了,也有可能不会被释放!

如果性能调优的话,建议使用WeakHashMap. :D

应该尽可能的避免定义这样的东西,Servlet本身就是非线程安全的,内存你根本就没办法约束了.这样是要出问题的.