我的应用程序使用RMI和JDBC与远程系统和数据库通信。虽然数据库问题已经解决,但事实证明RMI导致Tomcat 6检测到某种形式的内存泄漏(我也尝试过使用Tomcat 7,我们遇到同样的问题)。
基本上,当我们启动应用程序并且用户将信息输入到网页时,会对后端系统进行RMI调用。如果我们停止/启动或重新启动应用程序,Tomcat Manager现在可以检测到内存泄漏。如果我们启动应用程序并且不进行RMI调用,我们可以启动/停止&整天重启应用程序,没有问题。
有没有人知道在网络服务器仍在运行时,为了防止RMI调用在重新加载或停止/启动时导致WebappClassLoader中的内存泄漏需要做什么?
答案 0 :(得分:0)
我的应用程序使用RMI和JDBC与远程系统和数据库通信。虽然数据库问题已经解决,但事实证明RMI正在导致Tomcat 6检测到某种形式的内存泄漏...是否有人知道需要做什么来防止RMI调用在重新加载时导致WebappClassLoader中的内存泄漏或在网络服务器仍在运行时停止/启动?
RMI调用不会导致内存泄漏。我有八只雄猫通过RMI进行大量互动,其中包括几个月没有任何泄漏迹象。
答案 1 :(得分:0)
DGCClient尚未清理任何与RMI相关的资源,需要等待超时才能触发。由于容器曾试图停止,但是RMI资源闲置,根据Tomcat管理器产生了内存泄漏,在DGC收集RMI资源后清理了自身并纠正了内存泄漏情况。