0

错误出现在jsp页面的这一行!

    <table:table name="sessionScope.users" sort="external" pagesize="50" id="user" class="list" 
    requestURI="/admin-users.html" partialList="true" size="sessionScope.fullListSize">

我尝试使用其他帖子中的方法将 perm gen max 增加到 512m,用于调用 eclipse 和 Tomcat 实例。

好的,所以需要更多上下文:这是我的开发系统,在 Eclipse 中运行,并指向一个独立的 tomcat 实例,它是 Eclipse 中的服务器。

根据Tomcat 6 中的 Recurring "PermGen",我的 eclipse.ini 中有以下内容:

--launcher.XXMaxPermSize
512m

// ...

-XX:MaxPermSize=512m
-XX:+UseConcMarkSweepGC
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled
-Xms256m


-Xmx512m
4

2 回答 2

0

您可能多次重新部署到 Tomcat。Bounce Tomcat,它会没事的——直到你用太多的重启来填满 perm gen 空间。

更新:

如果您每次点击该页面时都会发生这种情况,我会担心您的页面在做什么。JSP 是 servlet 的模板,随后将其编译为 .class 文件。如果这个 JSP 太大以至于填满了你的 perm gen 空间,你就会遇到一个大问题。

所有关于泄漏检测的建议对我来说似乎都是错误的。泄漏通常会随着时间的推移而显现出来。您在下面说过,每次访问都会发生这种情况。

我推荐以下内容:

  1. 将 Eclipse 排除在外。如果您手动部署 WAR 并启动 Tomcat,您是否观察到相同的行为?Eclipse 启动可能是错误的。
  2. 您可以调整内存大小和 perm gen 空间。谷歌 JVM 选项,看看怎么做。
  3. 下载Visual VM 1.3.3,安装所有插件,并在运行 Tomcat 之前启动它。我会让你实时看到你的记忆发生了什么。您还可以看到许多其他有用的东西,例如线程等。您需要更多数据,而不是猜测。
于 2011-11-24T01:07:44.530 回答
0

一个编写良好的 web 应用程序在重新部署时不应该挂在它的类加载器上,但有很多原因会导致它挂起。

如果您在 Tomcat 上运行,您可能想在以下位置尝试server.xml

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

此页面有更多信息。

于 2011-11-24T01:11:55.197 回答