我的应用程序同时使用RMI和JDBC与远程系统和数据库通信。虽然数据库问题已经解决,但事实证明RMI导致了Tomcat6检测到的某种形式的内存泄漏(我也在Tomcat7上尝试过这个问题,我们也有相同的问题)。
基本上,当我们启动应用程序,用户在网页中输入信息时,会对后端系统进行RMI调用。如果我们停止/启动或重新启动应用程序,Tomcat Manager现在可以检测到内存泄漏。如果我们启动应用程序而不进行RMI调用,我们可以启动/停止和重新启动应用程序一整天而不会出现问题。
有人知道需要做些什么来防止RMI调用在RMI服务器仍在运行时重新加载或停止/启动时导致WebappClassLoader中的内存泄漏吗?
发布于 2015-09-24 05:54:52
我的应用程序使用RMI与远程系统和数据库通信。虽然数据库问题已经解决,但事实证明,RMI正在导致Tomcat6检测到的某种形式的内存泄漏……有人知道需要做些什么来防止RMI调用在RMI服务器仍在运行时重新加载或停止/启动时导致WebappClassLoader中的内存泄漏吗?
RMI调用不会导致内存泄漏。我有八个Tomcat,它们通过RMI进行大量交互,并且已经运行了几个月,没有任何泄漏的迹象。
发布于 2015-09-25 07:41:46
DGCClient没有清理任何与RMI相关的资源,需要等待超时才能触发。由于容器已尝试停止,但RMI资源仍然存在,根据Tomcat Manager的说法,这会产生内存泄漏,在DGC收集RMI资源后,Tomcat Manager会自行清理并更正内存泄漏情况。
https://stackoverflow.com/questions/32750107
复制相似问题