我在使用 JVM 堆时遇到了问题。
我们使用 Apache HTTP Server 和 Apache Tomcat Application Server 运营一个网站。
所有对 Apache HTTP 服务器的 *.jsp 请求都将被重定向到 Tomcat 服务器(协议:ajp)。
该网站有超过 10'000 个 jsp 文件。
我们还有一个谷歌搜索工具,它每晚都会抓取网站。
当它爬行时,jvm 堆空间上升到 8 GB 的最大限制。
使用 javamelody,我可以看到堆空间增加类似于加载的类。
为了分析,我做了一个堆转储。
以下是来自 eclipse MAT 的报告:
“org.apache.catalina.loader.StandardClassLoader @ 0x7092c5148”加载的“org.apache.jasper.servlet.JspServlet”的一个实例占用了1'189'603'328(96.75%)字节。
内存在“”加载的“java.util.concurrent.ConcurrentHashMap$Segment[]”的一个实例中累积。
关键词
java.util.concurrent.ConcurrentHashMap$Segment[]
org.apache.catalina.loader.StandardClassLoader @ 0x7092c5148
org.apache.jasper.servlet.JspServlet
GSA 请求是否存在问题?
为什么JVM不能卸载生成的类?