JVM与内存泄露问题

hwangita

在JSP中,session可以保存一些数据用来维持用户的信息,但是session是有大小的,如果存的太多,会报一个内存泄露的异常.现在的问题是:不许改动程序,要在session里放足够多的数据(足以造成内存泄露),但不允许抛异常,请给出一个解决办法.
面试官提示我,考虑一下JVM.

banq
2007-04-09 10:36

>session里放足够多的数据(足以造成内存泄露),但不允许抛异常
个人观点:出题目的人没有资源控制概念,实战中我们会通过自己的Cache机制或资源控制来避免内存泄漏,如果出题目的人了解EJB的有态Bean原理,就会为这个题目脸红。

hwangita
2007-04-09 15:43

呵呵,banq老师,你说的没错。但是,现在的关键是,安要求答题!

其实,我没什么权力要求你怎么样回答,但是,我觉得吧,你能先帮我按要求回答,然后,在分析它的问题,那就最好了 。

如果,其它朋友肯不吝指教,那我先谢谢了!

banq
2007-04-09 16:40

多谢,我也不知道答案,因为我没有这样思考问题,也没有碰到过这样问题,请其他人帮帮忙,sorry.

leebai
2007-04-11 23:30

这个问题本身就是个问题:不存在“内存泄露异常”,只有“OutOfMemoryError”。

除了session数据的生存期比一般request线程中的变量生存期更长,在session里放数据,与在其他任何位置放数据没有本质区别。如果你是有意识地要放很多数据到session里,那根本不叫“内存泄露”,如果真“泄露”了,那一定是servlet容器出了BUG。

不改程序要解决这问题,只有加大JVM的堆大小。