一尘不染

为什么Tomcat 5.5(带有Java 1.4,在32位Windows XP上运行)突然挂起?

tomcat

我已经使用大型Web应用程序运行了带有Java 1.4的Tomcat
5.5已有一段时间了。在大多数情况下,它可以正常运行,但有时它会挂起,没有异常生成,除了重新启动Tomcat外,没有其他使它再次运行的明显方法。Tomcat实例在堆上允许有1
GB的内存,但很少超过300 MB。是否还有其他人遇到此问题,并且有解决方案吗?

为了澄清起见:我确定了通过任务管理器和Eclipse使用了多少内存(我也尝试过在Eclipse之外运行它,但是最终会遇到相同的问题,尽管要花更长的时间)。使用Eclipse,我将查看通过其较小的(可选)内存窗格分配的内存,以及通过任务管理器分配给javaw.exe的内存。我使用sysdeo吗?Eclipse的tomcat插件。


阅读 252

收藏
2020-06-16

共1个答案

一尘不染

对于任何jvm进程,强制执行线程转储。我相信,在Windows中,可以通过CTRL-BREAK在控制台窗口中完成此操作。

在* nix中,几乎总是“ kill -3 jvm-pid”。

这可能表明您是否有线程正在等待数据库连接池/线程池等。

要检查的另一件事是您当前与JVM有多少连接-使用NETSTAT或SysInternals实用程序,例如tcpconn / tcpview(使用谷歌搜索)。

另外,尝试使用verbose:gc JVM标志运行。对于Sun的JVM,运行方式类似于“ java
-verbose:gc”。这将显示您的垃圾回收。如果收集很多(特别是全收集),则可能是内存泄漏。完整的收藏非常昂贵,尤其是在像这样的大堆上。

您如何确定仅使用了300mb?

2020-06-16