jjzjj

java - 大 Permgen 大小 + 性能影响

我们在tomcat6上运行liferay门户。每个portlet都是一个包含的web应用程序,因此它包含portlet本身需要的所有库。我们目前有30多个portlet。这样做的结果是我们的tomcat的permgen会随着我们部署的每个portlet而增加。我们现在有两条路可以走。要么将我们每个portlet常用的一些库移动到tomcat共享库。这将包括诸如spring/hibernate/cxf/....之类的东西,以减少我们的permgen大小或者更容易的是增加permgen的大小。第二个选项允许我们将每个portlet作为一个独立的实体。现在的问题是,增加permgen大小是否

java - 保持 MaxPermSize 较小有什么好处吗?

假设一个64位JVM,保持MaxPermSize小有什么显着的好处吗?这是在频繁重新部署的JavaEE应用程序的上下文中,并且存在类加载器泄漏。作为一个中期解决方法,将MaxPermSize增加到一个荒谬的值似乎是非常合理的-只要它不会耗尽磁盘交换空间。因为未部署的应用程序的代码几乎全部未使用(除了泄漏中涉及的代码),它被操作系统调出页面。因此,未部署的碎屑对物理内存的负载似乎可以忽略不计;这已通过观察RSS(Unix上的工作集大小)得到验证。我应该关注其他影响吗? 最佳答案 来自JVMHotSpotFAQShouldIincrea

java - 使用 PermGen 空间或 roll-my-own intern 方法?

我正在编写一个编解码器来处理使用定制有线协议(protocol)通过TCP发送的消息。在解码过程中,我创建了一些String小号,BigDecimal和日期。客户端-服务器访问模式意味着客户端发出请求然后解码数千个响应消息是很常见的,这导致大量重复String小号,BigDecimal等因此我创建了一个InternPool类允许我实习每一类对象。在内部,池使用WeakHashMap>.例如:InternPoolpool=newInternPool();...//ReadBigDecimalfrominbufferandthenintern.BigDecimalquantity=pool

java - 内存不足错误 : PermGen Space -- Jasper Report with Spring running on Tomcat

我们的网络应用遇到了一个复杂的情况是STS/Tomcat7开发的Spring应用。应用程序与Jasperreport4.6.0集成后,它总是抛出`OutOfMemoryError:PermGenSpace。然后让它工作的唯一方法是重新启动应用程序。但过了一会儿又发生了。这是异常前的日志:Oct17,20123:42:27PMorg.apache.jasper.compiler.TldLocationsCachetldScanJarINFO:AtleastoneJARwasscannedforTLDsyetcontainednoTLDs.Enabledebugloggingforthis

java - 内部类是轻量级的吗?

是内部类比普通类更轻量,还是最终java编译内部类和普通类一样?我知道java中的类本身并不是非常轻量级的,它们会占用部分permgen内存,所以我想知道是否最好使用类似闭包的函数作为内部类,或者标准类是否也可以好吗? 最佳答案 内部类和匿名内部类都编译成.class文件。例如:classOuter{classInner{}Objectfunction(){returnnewObject(){};}}会生成三个.class文件,Outer.class、Outer$Inner.class、Outer$1.class。它们并不比其他类更

java - 什么时候收集 perm gen?

我正在开发一个Tomcat应用程序,它使用CMS收集器和内存条来触发GC。当我重新加载webapps时,我有时会遇到这样一种情况,即老一代已满足以触发GC,但死掉的类加载器不会被收集。我读到类被分配到permgen并猜测它们因此被Oldgen集合忽略。我写了下面的测试类来测试这个理论。packagetest;importjava.io.IOException;importjava.io.InputStream;importorg.apache.commons.io.IOUtils;/*JVMOptions:-server-XX:+UseMembar-XX:+UseConcMarkSwe

打开jsp页面时的java.lang.OutOfMemoryError(PermGen空间)和java.lang.ClassNotFoundException

我使用SpringSourceToolSuite3.0.1,Tomcat服务器7.0.21,maven-2.2.1。我成功构建了我的Web应用程序,运行了Tomcat服务器。该应用程序成功运行。重启Tomcat服务器后,我在网页login.jsp上轮流看到下一个错误:org.springframework.web.util.NestedServletException:Handlerprocessingfailed;nestedexceptionisjava.lang.OutOfMemoryError:PermGenspacetypeExceptionreportmessagedesc

java - 找到用死 Groovy 代码填充 PermGen 的代码

我们的glassfish实例每两周关闭一次,并出现java.lang.OutOfMemoryError:PermGenspace。我将PermGen空间增加到512MB,并使用jstat-gc开始转储内存使用情况。两周后,我得出了下图,显示了PermGen空间是如何稳步增长的(x轴上的单位是分钟,y轴上的单位是KB)。我尝试在谷歌上搜索某种可以查明错误的分析工具和一个关于SO提到的jmap的线程,事实证明它非常有用。在从jmap-permstats$PID转储的大约14000行中,大约有12500行包含groovy/lang/GroovyClassLoader$InnerLoader,

Java 7 无法收集由 Java 5 收集的永久代

有谁知道为什么java7收集永久代应用失败,导致java.lang.OutOfMemoryError:PermGen,而java5收集永久代应用运行良好?App在循环中对jython表达式求值,一次迭代大约为1次。5秒。循环体如下所示:PythonInterpreterpy=newPythonInterpreter();py.set("AI",1);((PyInteger)py.eval(expr)).getValue()为在java7和java5中运行的应用截取的jvisualvm屏幕截图。在这两种情况下使用相同的参数:-Xmx700m-XX:MaxPermSize=100m-XX:

java - 解决 PermGen 问题的各种选择

我正在研究有关Java618VM上垃圾回收的各种选项,并希望得到一些指导。我们在JBoss上运行我们的应用程序,在重新部署期间偶尔会出现臭名昭著的PermGen错误。互联网上有很多关于解决或缓解此问题的最佳方法的相互矛盾和过时的信息。来自whatIcansee,以下是正确的:VM选项本身不会解决此问题,只能推迟它。解决此问题的唯一可靠方法是修复应用服务器本身(不太可能)或在应用服务器中运行的代码(我们的代码或第三方库)(更有可能)中的编码错误。Permgen的填充往往是应用程序类加载器加载的对象引用应用服务器类加载器加载的对象的结果,从而防止应用程序类加载器的垃圾回收。我有两个问题:以