关于类的生存期的问题,请前辈们指点。

03-01-06 henry.t
在页面开始时我引入一个SESSION BEAN 比如
<jsp:useBean id="adminBean" scope="session"
class="/AdminBean"/>

在页面中间,我要使用一个类,当然它的生存期在页面结速时就释放了(应该包括其私有变量),但如果它的构造函数里要用到上面我引入的BEAN,就像
…………………
classA a = classA(adminBean);
………………
那么,当页面结速时(calssA a 释放资源时),adminBean是不是也释放了呢???(里面保存有登陆时的信息,以后一直要用)

fuzhou
2003-01-07 10:40
应该不会吧,只是释放掉了一个该对象的引用而已

henry.t
2003-01-07 23:47
没有别的意见吗??请大师们点拨

henry.t
2003-01-08 23:38
请指点

mem_fox
2003-01-09 09:59
我认为应该不会自动施放ClassB ,按照JVM之自动回收没有任何引用的对象,现在只是指定了ClassA的生存器,没有保证没有其他的对象指到B

henry.t
2003-01-10 10:39
up,等待BANG的说法,谢谢楼上的讲解,我也觉得是这样

henry.t
2003-01-12 17:31
等到花都开了

cc
2003-01-13 13:08
看你的adminBean有没有其它引用,没有的话,也被释放了

fuzhou
2003-01-13 16:23
不明白了,关于存在session中的对象的生存期是什么样的?
我觉得只要浏览器不关闭,或者会话没有超时,就不应该被释放啊

vic
2003-01-21 12:41
不论session也好,还是一般class的对象也好,如果没有引用指向
它,那它在某个时候会被GC回收释放掉

Session简单来说就是server定期检测一下某个对象是否在指定时间
(一般默认20分钟)内被访问了,如果不是,则释放掉session,也
就是把server自动把指向session对象的引用设置为null

至于server怎么知道引用是什么,因为你在声明一个session时候
的语法: session.setAttribute("mySession", myObj);
通过key:mySession就可以找到指定对象的引用

你也可以自己释放session,session.setAttribute("key", null);

vic
2003-01-21 12:42
往了说了,你浏览器一直开着,如果不和server有交互,那也是白搭

猜你喜欢