gpt4 book ai didi

java - FileCleaner 是为了避免在 Web 应用程序中进行多次部署吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:54:48 24 4
gpt4 key购买 nike

Eclipse 在我装有 jdk 1.6 的 UNIX 机器上出现内存不足异常,同时尝试多次运行我的 Web 应用程序而不终止我的本地应用程序服务器。然后通过 vm 参数增加我的堆空间,并尝试更改 Eclipse.ini。但是没用。

用谷歌搜索了一段时间并且知道这是 webapp classLoader 多次部署的问题。我无法找到解决这个问题的方法。请给出一个解决方案来克服这个问题。

我发现使用 FileCleaner ( FileCleaningTracker ) 用于避免在 LogoutServlet 中进行多次部署和编写代码。

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.getSession().invalidate();
FileCleaner.getInstance().exitWhenFinished();
resp.sendRedirect("/index");
}

但它不起作用。

提前致谢。

最佳答案

我不太了解 FileCleaner,但粗略地回顾一下 javadoc 指出调用 exitWhenFinished() 会终止删除文件的后台线程。我的解读是这些文件将不会被删除。

我的猜测是您的问题实际上是热插拔代码的标准问题:PermGen 空间不足。发生这种情况是因为类定义的某些部分永远不会被删除,并且当您停止/启动 servlet 时,这些部分会累积在 JVM 中。

这个问题最简单的答案是创建一个足够大的 PermGen 空间来让你完成工作。尝试将此添加到应用程序服务器的 VM args。

-XX:MaxPermSize=128M

这应该可以让您在内存不足之前工作更长时间。根据您机器上的内存量,可以增加此数字。

关于java - FileCleaner 是为了避免在 Web 应用程序中进行多次部署吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com