标签: permgen

如何诊断Java 8元空间泄漏?

我有一个带有一些有趣行为的J2EE应用程序......堆似乎表现良好,随着时间的推移随着垃圾收集而增长和缩小.没有明显的整体长期堆扩展.然而,在我们遇到MaxMetaspace并遇到OOME之前,元空间一直稳定地以每小时20 Mb的速度增长.我尝试了并行和G1垃圾收集器(jdk1.8.0_40).

应用程序在执行期间没有重新部署,因此它似乎不是典型的类加载器泄漏.有没有人建议如何追查这个泄漏的来源?

memory-leaks permgen classloader java-8 metaspace

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

29
推荐指数
3
解决办法
1万
查看次数

如何处理tomcat PermGen空间

背景:我有一个使用JSP的Web项目.IDE是Eclipse.tomcat的配置是:资源发生变化时自动发布,发布间隔为"1秒".

classes文件夹中的属性文件,用于保存一些设置.它也可以由servlet动态修改.修改操作由JSP中的save按钮触发.

问题:经过几次保存操作后,Tomcat自带了java.lang.OutOfMemoryError: PermGen space.

日志消息

java.lang.OutOfMemoryError: PermGen space
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:108)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:58)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:297)
    at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1064)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4238)
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3083)
    at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:404)
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1279)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1571)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1580)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1580)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1560)
    at java.lang.Thread.run(Thread.java:662)
Run Code Online (Sandbox Code Playgroud)

java tomcat permgen

27
推荐指数
4
解决办法
8万
查看次数

如何以编程方式找出我的PermGen空间使用情况?

我正在尝试java.lang.OutOfMemoryError: PermGen Space在Sun的Hotspot JVM上运行时诊断错误,并且想知道我的程序在不同点上使用了多少PermGen空间.有没有办法以编程方式查找此信息?

java memory-leaks permgen jvm-hotspot

25
推荐指数
1
解决办法
8893
查看次数

如何分析PermGen内容?

我想获得PermGen的转储,看看为什么它正在填充.有没有办法分析这个?我已经知道像log4j,tomcat webapp重新加载等常见的嫌疑人,但我的应用程序中也有一些自定义代理生成代码,只是想深入了解.

这有可能吗?

java permgen

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

真实生活,在Java中使用String.intern()的实际例子?

我已经看到很多原始的例子描述了String intern()的工作方式,但我还没有看到一个可以从中受益的真实用例.

我能想到的唯一情况是拥有一个接收大量请求的Web服务,由于僵化的架构,每个请求都非常相似.通过intern()在这种情况下使用请求字段名称,可以显着减少内存消耗.

任何人都可以提供在生产环境中使用intern()并取得巨大成功的示例吗?也许是一个流行的开源产品中的一个例子?

编辑:我指的是手动实习,而不是字符串文字的保证实习等.

java string permgen string-interning

24
推荐指数
2
解决办法
2940
查看次数

什么是Klass&KlassKlass

什么是KlassKlassKlass在JVM中执行热点?

据我在文章介绍Perm生成中所理解的,Klass是Java类的内部表示(比如说A),它将保存有关类结构的基本信息,包括字节码.它将作为对象本身存储.A类的每个对象都有一个指向KlassPermGen中内部表示的指针

KlassKlass是Klass类本身的内部表示.为什么KlassKlass需要?它存储了哪些额外信息?

此外,KlassKlass's Klass指针指向自身,我也不理解它.

java jvm permgen jvm-hotspot

23
推荐指数
1
解决办法
5046
查看次数

Tomcat-Spring-Hibernate Web应用程序中的"PermGen out of space"异常可以做些什么?

我们有一个Web应用程序,它使用Spring-Hibernate将注册用户数据保存在Oracle数据库中.该应用程序在开发环境中运行良好,但是当我们在具有更多数据的实时环境中复制它时,它失败了.最初应用程序正常启动,但在几次操作之后发生'PermGen out of space'异常.

我已经开始在Google,Spring和Hibernate论坛上搜索,但它没有帮助.关于这个错误有很多讨论,但是对于每个解决方案,都有人说:"它有效"而其他人说'它没有'.

例如,许多人提出增加-XX:MaxPermSizeJVM参数,其他人说它不起作用.有帖子说需要使用javassist库和其他库以及cglib库的问题.其他人说问题出在cglib上.

我们使用Java1.5_0_09,Spring 2.5和javaassist3.4.GA,Tomcat 5.5作为web容器,Oracle 10g作为数据库.

任何人都能解释一下导致这个问题的原因以及如何解决这个问题?

java spring hibernate permgen tomcat5.5

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

如何转储Permgen?

我想把应用服务器的Permgen转储.

我不想使用,-XX:+TraceClassLoading -XX:+TraceClassUnloading因为我不想重新启动服务器,我也不想使用jconsole.

我有任何工具jmap(用于堆转储没有找到permgen的任何选项)来获得permgen,以便我只能提供pid.

profiling jvm permgen

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

生产服务器上的Tomcat,PermGen并重新部署

看起来像

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

是一个常见的问题.您可以增加烫发空间的大小,但在重新部署100或200后,它将是满的.跟踪ClassLoader内存泄漏几乎是不可能的.

您在生产服务器上使用Tomcat(或另一个简单的servlet容器 - Jetty?)的方法是什么?每次部署解决方案后服务器是否重启?

您是否在许多应用程序中使用一个Tomcat?

也许我应该在不同的端口(或嵌入式Jetty)上使用许多Jetty服务器,并且每次都取消部署/重启/部署?

java tomcat out-of-memory permgen redeploy

21
推荐指数
1
解决办法
7922
查看次数