level 1
情景描述:
tomcat7 jdk1.7
catalina.sh设置了 Xms1024M Xmx1024M -XX:MaxPermSize=512M
服务启动运行一段时间后,tomcat占用内存总是来到了2G左右,超过了预期值。用jdk自带的工具查看了下服务dump文件,发现堆内存 + 永久区占用不到300M
这是啥情况,为什么tomcat内存占用超出这么多,但是查看服务并没有内存泄露
jmap查看服务的堆内存配置,说明catalina的配置是生效了的,有没有其他可以排查的方向?谢谢。
2022年11月29日 03点11分
1
level 1
后续:
根据jdk自带的jvm内存工具本地运行了两个小时发现线程数量堆积过多
接受请求的servlet每次都会新启动一个线程去解压zip文件,我换成线程池来管理这些线程就可以了
不太理解的是,我看这些堆积的线程都是已结束的,活动的线程就几个,讲道理已经结束的线程应该垃圾回收掉才对呢,为啥手动gc也没效果
有知道的大佬帮忙解惑下,感谢!
2022年12月14日 02点12分
2