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

时间:2012-07-11 09:32:22

标签: java eclipse servlets apache-commons

Eclipse在我的UNIX机器上给出了内存不足,有jdk 1.6。同时尝试多次运行我的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");
    }

但它没有用。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我不太了解FileCleaner,但是对javadoc的粗略回顾表明调用exitWhenFinished()会杀死删除文件的后台线程。我对此的解读是,文件不会被删除。

我的猜测是你的问题确实是热交换代码的标准问题:超出PermGen空间。发生这种情况是因为有一些类定义永远不会被删除,当你停止/启动servlet时,这些部分会在JVM中累积。

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

-XX:MaxPermSize=128M

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