关于tomcat内存使用的问题

在配置tomcat线程池后,tomcat线程在处理完一个连接后不会销毁掉。在线程处理过程中需要创建一个很大的对象,而创建对象的开销是很大的,如果能将这个对象放入线程内,下... 在配置tomcat线程池后,tomcat线程在处理完一个连接后不会销毁掉。
在线程处理过程中需要创建一个很大的对象,而创建对象的开销是很大的,如果能将这个对象放入线程内,下次连接时就不需要再创建了。
该怎么实现呢?看servlet的源代码也找不到解决方法。
求大神帮忙。。
展开
 我来答
mohunk10
2013-07-16 · TA获得超过754个赞
知道小有建树答主
回答量:466
采纳率:100%
帮助的人:449万
展开全部
创建一个开销很大的对象,为了防止它多次实例化,最好是在tomcat启动时,就把它给创建出来,然后常驻到内存中。如果这个对象,是全局的,最好使用单例模式,如果这个对象与线程绑定的,那么最好使用ThreadLocal类来做。至于tomcat线程池一般是由tomcat管理,人工很少对它进行干预。
追问
谢谢提醒,刚刚看了下ThreadLocal,发现这么好的东西竟然不知道。

但是能不能重写tomcat创建线程的方法呢?ThreadLocal是用map来保存信息,当用户多了以后会出现查询慢,开销大的情况吧?
追答
呵呵 。重写tomcat,我没有这个能力。对于ThreadLocal来说,当前线程结束以后,JVM就会对ThreadLocal绑定线程资源进行回收,开销不会太大。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式