专栏首页Java典籍记一次tomcat内存大涨到溢出的经历

记一次tomcat内存大涨到溢出的经历

前一段时间提交了一个产品版本给测试人员测试,测试结果简直出人意料!

现象是测试一段时间后页面就卡死了,当时根据这个现象下意识的怀疑是卡到数据库这一层,然后查看数据库连接相关的参数,如意料之中的相似,连接数太多了!当把数据库连接数解决后,本以为这个bug解决了,但是...

测试一段时间后页面又卡死了!!!

打开任务管理器,发现tomcat内存超过了1.5G,而且tomcat关不掉!是什么原因导致的呢?左思右想之后,想到了一个可能会导致tomcat内存上涨的点,那就是多线程,然后翻代码找线程池的配置,发现也没什么可疑之处。

心想这也太奇怪了,那就先解决下tomcat关不掉的问题吧,百度...检查代码...几分钟后找到了,在tomcat监听器的销毁方法(contextDestroyed)里没有关闭线程池,这种情况下,由于线程池没法关闭,进而导致tomcat无法关闭的问题。

将代码改为:

好了,tomcat关不掉的问题是解决了。

接下来解决内存溢出的问题(先看日志):查看tomcat的日志发现,页面每一次调用后台接口Spring的配置文件都会初始化一遍,也就是每次请求spring都会重新注入一次bean,而且占用的内存不会被回收!

然后我就想什么情况下会初始化spring的配置文件:tomcat启动的时候;通过关键字new出来的时候,即:

然后就全局搜索代码,果然在过滤器里找到了,每次接口来就会new一个对象,多可怕的代码,在心里一直骂自己当时怎么那么粗心!这次经历我会引以为戒,记下来也是告诉自己以后不要再犯类似的问题,铭记经验教训,才能更好的前行!

本文分享自微信公众号 - Java典籍(helloHBLing),作者:冰湖一角

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 线程的生命周期

    进程:程序或者任务的执行过程,拥有资源和线程。 一个进程包括由操作系统分配的内存空间,包含一个或多个线程。 线程:系统中的最小执行单位,一个进程可以有多个线程,...

    硕人其颀
  • Java Thread. joint()示例及详解

    在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理...

    硕人其颀
  • SVN恢复历史版本及解决冲突方法

    前段时间有小伙伴们问我关于SVN恢复历史版本及解决冲突的问题,今天抽空就整理了一下,以为在此以前,有的小伙伴解决冲突使用的方法是:先把自己写的代码备份或删掉,更...

    硕人其颀
  • 01 . Tomcat简介及多实例部署

    这里的nginx即做静态页面的响应又完成反向代理的功能 client Nginx代理 tomcat tomcat

    常见_youmen
  • 第九章 tomcat配置

    上一章,我们介绍了apache服务的部署,其中我们介绍过网页开发所用到的语言,以asp、jsp、php为主,我们已经演示过php页面的使用。本章我们将演示jsp...

    晓天
  • 将 java 项目部署到 linux 上的具体步骤

    项目部署其实非常的简单,尤其是 java 项目。最近微信群里有网友,初学者还未毕业,问我 Java 项目是如果部署的?

    业余草
  • Web基础配置篇(三): tomcat的配置及使用

    tomcat,大家应该都知道是啥,servlet的Web容器而已,遵守servlet规范的JavaEE服务器。我们通常用tomcat来部署war包来做应用服务器...

    品茗IT
  • CentOS下部署JDK+Tomcat8

    1、Tomcat需要JDK环境,参考之前的文章CentOS6下安装Java JDK8,提前安装好JDK环境

    yuanfan2012
  • SpringBoot解决内、外tomcat部署兼容问题

    我们在使用springBoot开发的过程中出于方便,都会选择使用本地类Application中的main方法启动服务,即可实现本地的调试,十分的...

    Java深度编程
  • Linux 环境定时重启 tomcat

    亲手搭建的博客系统经常会宕机,一直想着定时检测tomcat服务挂掉之后进行重启操作。昨天终于有时间,就把这个事情做了一下,最终可以正常工作。本篇就记录一下我解决...

    不安分的猿人

扫码关注云+社区

领取腾讯云代金券