【发布时间】:2015-12-21 09:25:54
【问题描述】:
我的应用程序同时使用 RMI 和 JDBC 与远程系统和数据库通信。虽然数据库问题已得到解决,但事实证明 RMI 导致 Tomcat 6 检测到某种形式的内存泄漏(我也在 Tomcat 7 上尝试过,我们遇到了同样的问题)。
基本上,当我们启动应用程序并且用户在网页中输入信息时,会对后端系统进行 RMI 调用。如果我们停止/启动或重新启动应用程序,Tomcat 管理器现在可以检测到内存泄漏。如果我们启动应用程序并且不进行 RMI 调用,我们可以整天启动/停止和重新启动应用程序而不会出现问题。
有谁知道需要做些什么来防止 RMI 调用在网络服务器仍在运行时重新加载或停止/启动时导致 WebappClassLoader 中的内存泄漏?
【问题讨论】:
-
tomcat 的消息是什么?是关于 ThreadLocal 的吗?
-
不,仅此而已 - 日志中没有错误消息。但是,Tomcat 管理器声称,如果我在使用 RMI 调用的应用程序中执行某些操作后单击“查找泄漏”按钮,然后使用管理器重新加载/停止应用程序,则会发现泄漏。我可以在 jvisualvm 中看到确实创建了一个新的 WebappClassLoader(上下文)。
标签: java tomcat memory-leaks rmi