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");
}
但它没有用。
提前致谢。
答案 0 :(得分:0)
我不太了解FileCleaner,但是对javadoc的粗略回顾表明调用exitWhenFinished()会杀死删除文件的后台线程。我对此的解读是,文件不会被删除。
我的猜测是你的问题确实是热交换代码的标准问题:超出PermGen空间。发生这种情况是因为有一些类定义永远不会被删除,当你停止/启动servlet时,这些部分会在JVM中累积。
这个问题最简单的答案是创建一个足够大的PermGen空间,让你完成工作。尝试将此添加到应用程序服务器的VM args。
-XX:MaxPermSize=128M
这应该可以让你在内存不足之前工作更长时间。这个数字可以根据机器上的内存量而增加。