我目前收到一个java.lang.OutOfMemoryError:PermGenspace。我正在使用Jetty和LinuxUbuntu。我曾尝试阅读并尝试在之前的类似问题中提供的不同解决方案,但没有取得任何成功。一个类似的问题是Dealingwith“java.lang.OutOfMemoryError:PermGenspace”error但这些解决方案似乎使用Tomcat而不是Jetty。如果我重新部署我的服务几次,我会不断收到内存不足错误。例如,为了测试这个,我将转到我的webapps文件夹并运行touch*.xml来更新时间戳,然后重新运行jetty,我得到了内存不足错误。在
我在代码中使用java反射是这样的:Methodmethod=LogFactory.class.getDeclaredMethod("getContextClassLoader");method.setAccessible(true);ClassLoaderclassLoader=(ClassLoader)method.invoke(null);LogFactory.release(classLoader);我用jprofiler可以看到很多这样的类sun.reflect.GeneratedMethodAccessor11每次调用都会增加这些类sun.reflect.Bootstrap
我不断地在我的环境中检测PermGen中的OOM:Java6jboss-4.2.3不是大型网络应用我知道String.intern()问题-但我没有充分利用它。增加MaxPermGen的大小并不费力(从128Mb到256Mb)。还有什么其他原因可以为PermGen调用OOM?在这种情况下,哪种调查方案最好(策略、工具等)?感谢您的帮助 最佳答案 Seethisnote将JDBC驱动程序放在common/lib(如tomcat文档所述)而不是WEB-INF/lib不要将commons-logging放入WEB-INF/lib,因为to
我在Glassfish3.1上运行GWT+Hibernate应用程序。几个小时后,我的Permgen空间用完了。这没有任何webapp重新加载。我正在使用–XX:MaxPermSize=256m–XmX1024m运行。我听取了thispage的建议,并发现我正在泄漏大量类——我所有的Hibernate模型和我所有的GWTRequestFactory代理。上面引用的指南说“检查链,找到意外引用,并修复代码”。说起来容易做起来难。类加载器总是指向org.glassfish.web.loader.WebappClassLoader的实例。进一步挖掘,我发现了很多来自$Proxy135和类似名
我的应用程序显示“OldGeneration”/“TenuredGeneration”大小不断增加,当这达到“OldGen”的最大限制时,PermGen大小突然增加。这是我的代数:-Xmx1200m-Xms1200m-Xmn450m-XX:MaxPermSize=600m-XX:+UseParallelGC这是在32位Fedora上,所以不能有比这更大的堆。虽然该应用程序使用了SpringIOC和Hibernate,但它没有进行任何花哨的类加载,SpringApp-context.xml定义了大约1000个Bean。此应用从175MB的PermGen开始,在几个小时内稳步增加到约250
我的eclipse因OOO:perm-gen错误而崩溃。我打开了eclipse.ini来增加它,但令我惊讶的是我发现了两次XXMaxPermSize如下所示。我不确定为什么有两个,哪个一个要改变。-startupplugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar--launcher.libraryplugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120522-1813-productorg.eclipse.epp.package.java
有什么方法可以测量我的Java应用程序中当前使用的永久代(PermGen)大小?我无法使用VisualVM等外部分析工具。更好的方法是估算PermGen中Java类的内存消耗。它几乎与字节码文件的大小成正比吗? 最佳答案 您可以使用JDK附带的MemoryMXBean。但我认为没有办法从正在运行的应用程序中查询permgen的使用情况。关于MemoryMXBean的文档. 关于java-如何确定Java应用程序中PermGen的大小(即以编程方式)?,我们在StackOverflow上找
我试图以编程方式找出调用我程序的JVM的最大permgen和最大堆大小,而不是它们当前可用的大小。有办法吗?我熟悉JavaRuntime对象中的方法,但不清楚它们真正传递的是什么。或者,有没有办法询问Eclipse为这两个分配了多少? 最佳答案 为最大permgen尝试这样的事情:publicstaticlonggetPermGenMax(){for(MemoryPoolMXBeanmx:ManagementFactory.getMemoryPoolMXBeans()){if("PermGen".equals(mx.getName(
我在Sun的JRE6中运行Tomcat6,每对部署我都会遇到OutOfMemoryException:PermGen。我已经完成了PermGen解决方案的谷歌搜索并尝试了许多修复。没有工作。我读了很多关于Oracle的JRockit的好东西,以及它的PermGen分配如何在大小上达到千兆(与Sun的128M相比),虽然它没有解决问题,但它允许我在PermGen异常之间重新部署100次,而不是2现在的时间。JRockit的问题是要在生产环境中使用它,您需要购买值(value)数千美元的WebLogic。存在哪些其他(免费)选项更容忍PermGen扩展?以下JVM在这方面的表现如何?IBM
如何增加我的Weblogic(Java)使用的内存。当从eclipse启动服务器时,它显示一条消息JAVAMemoryarguments:-Xms256m-Xmx512m-XX:MaxPermSize=256m。我无法理解它从哪里获取值(value)。一段时间后,Weblogic服务器由于permgen空间不足而失败。我从控制台添加了启动参数,但这没有任何效果。你能帮我从哪里获取内存值吗? 最佳答案 当您在Eclipse中为WebLogic配置“服务器”时,您选择域目录(对于本地)。该域目录包含Eclipse将用于启动WebLogi