作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个在 Tomcat 中运行的生产 Web 应用程序(Struts、iBatis、Hibernate),它会在运行 6 到 7 天后在处理请求时挂起,但在执行线程转储后会再次正常运行。
我很难弄清楚为什么会这样。
我只是想知道是否有其他人遇到过类似的事情。
最佳答案
也许这会帮助您找到问题的原因。
我已经在 tomcat 上启用了 JMX(在启动 tomcat 时设置这些可选的 vm 参数)-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=30188(你想让jmx在tc上运行的任何端口)-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false
然后我编写了一个小应用程序来监视内存使用情况(通过 jmx)并在内存使用量超过 80% 时通知我。
一旦出现问题,我就会知道。然后我将获得内存中对象的直方图(请参阅 http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html 了解如何获得)。
最后发现是我的一个 ejbQL 查询导致使用了大量内存。
希望它能以某种方式帮助......
关于java - Tomcat Web 应用程序线程转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2279190/
我是一名优秀的程序员,十分优秀!