我正在寻找一种运行时解决方案来查找网络应用程序的内存使用情况。 我提供了一个包含 tomcat 的框架,不同的客户端在该框架上部署多个 Web 应用程序。有时其中一个会消耗大量内存,从而破坏整个过程。 我想要一个管理器网络应用程序(如 tomcat 的管理器)来检测这一点,并可能取消部署\重新部署有问题的网络应用程序。 另一种解决方案(我认为不可能)是将堆的一部分分别分配给每个网络应用程序。
要求客户更改现有的网络应用程序是可能的,但我宁愿不这样做。
有什么想法吗?
最佳答案
您无法拦截每个Web应用程序中的分配,并且没有来自垃圾收集器的回调,因此您无法知道每个Web应用程序使用了多少内存。我认为您最好部署多个 Tomcat 实例,这样一个“流氓”Web 应用程序就不会杀死所有其他 Web 应用程序(每个 Web 应用程序最多一个 Tomcat,但您也可以创建组来限制实例数量,具体取决于严重程度)您的不同应用程序)。
关于java - 如何管理tomcat中的webapps足迹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12262683/