标签: permgen

经过两天连续运行约110个用户,Java服务器cpu使用率为100%

我有一个tomcat 6.0.20,apr 1.2,jdk 1.6.0_15,mysql 5.1.38在一个4GB内存的rhel盒子上运行.有一个简单的jsp/servlet应用程序,有5个用户,一个struts 1.2.0.9,其中有64个用户,一个struts 2.0应用程序,有35个用户.struts 2.0用户每秒都会输入一次,每天大约有900个条目.我也在最后两个应用程序中使用toplink来持久化.我已经将所有未引用的对象声明为null,在代码中,已经从struts 2站点​​和tomcat站点应用了配置文件的生产值.在mysql中应用线程缓存,减少wait_timeout和interactive_timeout等同于tomcat的会话超时.在linux中增加文件描述符.重新设计的查询.检查了线程转储,观察了gc统计数据,在此基础上应用了上面的变化,

YET仍面临"java.lang.OutOfMemoryError"错误.

在不同的时间它的不同的东西,有时它的Servlet.service(),有时它的image.servlet,有时它导致它的jasper.

非常令人沮丧,因为错误不是一成不变的,而是随着时间的推移不断变化

任何帮助请非常感谢!!!

JAVA_OPTS = -server -XX:+ UseConcMarkSweepGC -XX:+ CMSClassUnloadingEnabled -XX:+ CMSPermGenSweepingEnabled -XX:+ CMSParallelRemarkEnabled(tomcat manager报告34 mb为空所以没有使用permsize,mx和mn等)

persistence.xml中

 <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/dbname?autoReconnect=false"/>
Run Code Online (Sandbox Code Playgroud)

server.xml中

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8443" compression="on" compressableMimeType="application/octet-stream,text/html,text/xml,text/plain,application/x-javascript,image/gif,text/css,image/gif,application/vnd.ms-excel,application/pdf" enableLookups="false"/>
Run Code Online (Sandbox Code Playgroud)

的context.xml

<Context reloadable="false" delegate="false" privileged="false">
Run Code Online (Sandbox Code Playgroud)

java tomcat struts toplink permgen

6
推荐指数
1
解决办法
8272
查看次数

Glassfish/Hibernate的PermGen空间问题

我正在Glassfish 3.1上运行GWT + Hibernate应用程序.几个小时后,我跑出了Permgen空间.这没有任何webapp重新加载.我正在跑步–XX:MaxPermSize=256m –XmX1024m.

我接受了这个页面的建议,发现我泄漏了很多类 - 我所有的Hibernate模型和所有的GWT RequestFactory代理.

上面引用的指南说"检查链条,找到意外参考,并修复代码".说起来容易做起来难.

类加载器总是指向一个实例org.glassfish.web.loader.WebappClassLoader.进一步挖掘,我发现了许多来自$Proxy135和类似命名对象的引用.但我不知道还有什么可以贯彻的.

java memory-leaks permgen classloader glassfish-3

6
推荐指数
2
解决办法
1万
查看次数

PermGen Out of Memory原因

我经常在PermGen中检测我的环境中的OOM:

  1. java 6
  2. 的jboss-4.2.3
  3. 不是一个大的网络应用程序

我知道String.intern()问题 - 但我没有足够的宝贵用法.MaxPermGen尺寸的增加不会产生任何影响(从128 Mb到256 Mb).

还有什么其他原因可以为PermGen调用OOM?在这种情况下(战略,工具等),最佳调查方式是什么?

谢谢你的帮助

java jboss out-of-memory permgen

6
推荐指数
2
解决办法
2万
查看次数

使用Jetty 7重新部署时解决PermGen问题

经过几天的调试,我已经成功地在Tomcat 6.0.32上成功地重新部署了一个中到大型的Web应用程序而没有任何PermGen泄漏.我看到PermGen它填满后的下降,并且类加载器被垃圾收集.

经过多次欢欣之后,我尝试重新部署应用程序而不会泄漏我们的开发环境,该环境由Maven和Jetty插件组成.

不幸的是,我似乎遇到了服务器限制,如下面的屏幕截图所示

Yourkit快照http://img811.imageshack.us/img811/7320/jettyclassloaderbeanelr.png

Jetty请求线程有一个强引用,BeanElResolver它反过来强烈引用我的webapp中的多个类.

我没有找到关于如何刷新此信息的参考.

如何PermGen从我的应用程序中删除此最终泄漏?


更新:

我已经做了以下修复问题,没有运气:

  • 更新到最新版本的Jetty插件(7.4.5和8.0.0.M3)
  • 使用CMS收集器: -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled

更新2:

java jetty el permgen maven

6
推荐指数
1
解决办法
1730
查看次数

如何分析PermGen空间?

可能重复:
如何分析PermGen内容?

我想知道占用PermGen空间的是什么 - 字符串实习生()或类?是否有任何工具可以帮助进行此分析?

java jvm permgen

6
推荐指数
1
解决办法
7903
查看次数

字符串创建和字符串数组内存分配

在创建String时,我已经阅读了很多关于内存分配的相互矛盾的文章.有些文章说新的运算符在堆中创建一个String,而String literal是在String Pool [Heap]中创建的,而有些人则说新运算符在堆中创建一个对象而另一个对象在String池中创建.

为了分析这个,我编写了下面的程序,它打印了String char数组和String对象的哈希码:

import java.lang.reflect.Field;

public class StringAnalysis {

    private int showInternalCharArrayHashCode(String s)
            throws SecurityException, NoSuchFieldException,
            IllegalArgumentException, IllegalAccessException {
        final Field value = String.class.getDeclaredField("value");
        value.setAccessible(true);
        return value.get(s).hashCode();
    }

    public void printStringAnalysis(String s) throws SecurityException,
            IllegalArgumentException, NoSuchFieldException,
            IllegalAccessException {
        System.out.println(showInternalCharArrayHashCode(s));

        System.out.println(System.identityHashCode(s));

    }

    public static void main(String args[]) throws SecurityException,
            IllegalArgumentException, NoSuchFieldException,
            IllegalAccessException, InterruptedException {
        StringAnalysis sa = new StringAnalysis();
        String s1 = new String("myTestString");
        String s2 = new String("myTestString");
        String s3 = s1.intern();
        String s4 = "myTestString";

        System.out.println("Analyse …
Run Code Online (Sandbox Code Playgroud)

java memory string permgen

6
推荐指数
1
解决办法
2576
查看次数

permgen垃圾收集需要多个Full GC

我们正在运行grails,我们注意到需要多个完整的垃圾收集来清除permgen空间.

2013-06-06T16:11:27.016+0000: 32582.145: [Full GC 32582.145: [CMS2013-06-06T16:11:45.404+0000:     32600.532: [CMS-concurrent-mark: 21.403/86.063 secs] [Times: user=48.44 sys=0.63, real=86.07 secs]
(concurrent mode failure): 7585874K->7290466K(10145024K), 57.9230770 secs] 7866094K->7290466K(10451712K), [CMS Perm : 261766K->261702K(262144K)] icms_dc=30 , 57.9232150 secs] [Times: user=57.97 sys=0.00, real=57.93 secs]
2013-06-06T16:12:25.183+0000: 32640.311: [GC [1 CMS-initial-mark: 7290466K(10145024K)] 7385976K(10451712K), 0.0880890 secs] [Times: user=0.09 sys=0.00, real=0.08 secs]
2013-06-06T16:12:25.271+0000: 32640.400: [CMS-concurrent-mark-start]
2013-06-06T16:12:25.427+0000: 32640.555: [GC 32640.556: [ParNew: 272640K->10006K(306688K), 0.0622620 secs] 7563106K->7300472K(10451712K) icms_dc=30 , 0.0624140 secs] [Times: user=0.24 sys=0.00, real=0.06 secs]
2013-06-06T16:12:25.734+0000: 32640.863: [GC 32640.863: [ParNew: 282646K->13476K(306688K), 0.0648770 secs] 7573112K->7303942K(10451712K) …
Run Code Online (Sandbox Code Playgroud)

java grails garbage-collection permgen

6
推荐指数
1
解决办法
5304
查看次数

java.lang.OutOfMemoryError:Jetty的PermGen空间错误

我现在正在接受java.lang.OutOfMemoryError: PermGen space.我正在使用Jetty和Linux Ubuntu.我曾尝试阅读和尝试以前类似问题中提供的不同解决方案,但我没有取得任何成功.一个类似的问题是

处理"java.lang.OutOfMemoryError:PermGen space"错误

但这些解决方案似乎使用Tomcat而不是Jetty.如果我重新部署我的服务几次,我会不断出现记忆错误.例如,要测试这个,我将转到我的webapps文件夹并运行touch*.xml来更新时间戳,然后重新运行jetty,我得到了内存不足错误.在我的jetty文件夹(包含bin,doc等,lib,日志,模块,start.jar)我正在运行

java -jar ../start.jar
Run Code Online (Sandbox Code Playgroud)

但这给了我错误.然后我尝试了我在其他示例中读到的内容,例如:

java -jar ../start.jar JAVA_OPTS="-Xms256m -Xmx512m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"
Run Code Online (Sandbox Code Playgroud)

要么

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
Run Code Online (Sandbox Code Playgroud)

要么

-XX:MaxPermSize=128m
Run Code Online (Sandbox Code Playgroud)

然后当我去firefox并导航localhost:8080并刷新时,在终端中我一直收到错误

java.lang.OutOfMemoryError: PermGen space
Run Code Online (Sandbox Code Playgroud)

java web-services jetty permgen

6
推荐指数
1
解决办法
9422
查看次数

用于查看permgen中的对象的工具

我有一些permgen溢出的问题.我可以使用哪些工具来查看现在加载到permgen中的类以及它们使用了多少内存?谢谢.

java permgen

5
推荐指数
2
解决办法
4753
查看次数

OSGi中的类路径扫描

我的项目有一组自定义的注释,可以存在于OSGi 4.3框架中部署的任何bundle中.我想在类路径中找到任何带有这些注释的类.我尝试为找到的每个类使用BundleWiring.listResources(...)Bundle.loadClass(...).我用一小组bundle做了一些测试,它需要大约200MB的Permanent Generation JVM内存空间,因为所有的类都被加载了.

当程序意识到它们没有这些注释时,有没有办法释放加载的类PermGen内存空间?

有没有更好的方法在OSGi框架中查找带注释的类?

osgi classpath permgen

5
推荐指数
1
解决办法
1172
查看次数