Tag: permgen

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

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

Groovy更新导致PermGen中大量死亡的GroovyClassLoaders

我有一个Java 7项目,每n分钟由n个进程运行脚本。 以下是运行脚本的代码示例。 ScheduledFuture scheduledFuture = scheduledService.scheduleAtFixedRate(new Runnable() { @Override public void run() { try (GroovyClassLoader cl = new GroovyClassLoader()) { // Load up reusable script modules in the class loader Class scriptClass = cl.parseClass(scriptSource); Foo script = optimizationClass.newInstance(); // Tell Groovy that we don’t need class meta info GroovySystem.getMetaClassRegistry().removeMetaClass(scriptClass); script.run(); cl.clearCache(); } catch (IOException […]

jBoss 4.0.2多次部署相同的WAR会导致jBoss崩溃,因为PermGem /内存不足错误

我开发Web应用程序并且使用jBoss 4.0.2,当我使用eclipse多次重新部署我的WAR时,jBoss会因为内存不足而崩溃。 当我必须将新版本安装到生产环境时,它将消耗生产服务器内存,因此这意味着我必须停止jBoss以防止从客户服务器重新部署内存。 有没有解决这个问题的方法?

如何分析PermGen空间?

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

permgen是否包含在-Xmx中?

当我说-Xmx=1024m ,这是否包括permgen即-XX:MaxPermSize=取自这些1024m还是分开? 看着这个,我认为它需要1024米,但直到现在我还以为它们是分开的。

Java类(PermGen)内存泄漏(Web应用程序) – 通用解决方案?

我知道,我有一个perm gen内存泄漏。 使用jvisualvm进行性能分析表明,在进行热部署时(例如,在不杀死JVM的情况下停止和启动应用程序,在tomcat,WebSphere,WebLogic等中) – PermGen空间不断增加。 在阅读之后,使用jhat和其他高级工具,我意识到我可能在其父类加载器的某个类中引用了WebAppClassLoader 。 即使我在jhat上做了一些基于JavaScript的大量查询,我也无法确定它 是不是有一个简单的实用程序可以找出谁负责你的类加载器不被垃圾收集(从而允许垃圾收集由它加载的类)? 我试过JProfiler,jvisualvm,jhat和很多谷歌 所有的LMGTFY朋友 – 我花了大约一天半的阅读论坛一步一步的说明,没有运气。 我正在寻找输出的实用程序或代码: Y类的对象X是唯一的GC根,它可以防止您的类被删除。

java PermGen空间是整个VM内存的一部分吗?

假设我用以下参数启动我的java VM: -Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m 512m PermGen空间是否会添加到1024m内存中,还是它们的一部分 ? 或者换句话说,我的总内存消耗是1536米还是1024米? 在后一种情况下,这是否意味着应用程序只有512m用于PermGen空间以外的目的? 如果这个问题显示对PermGen空间缺乏了解,请告诉我。 😉

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

我已经看到很多原始的例子描述了String intern()的工作原理,但是我还没有看到一个可以从中受益的真实用例。 我梦寐以求的唯一情况是拥有一个接收大量请求的Web服务,由于僵化的架构,每个请求都非常相似。 通过intern()在这种情况下使用请求字段名称,可以显着减少内存消耗。 任何人都可以提供在生产环境中使用intern()并取得巨大成功的示例吗? 也许是一个流行的开源产品的例子? 编辑:我指的是手动实习,而不是字符串文字的保证实习等。

PermGen Out of Memory原因

我经常在PermGen中检测我的环境中的OOM: java 6 的jboss-4.2.3 不是一个大的网络应用程序 我知道String.intern()问题 – 但我没有足够的宝贵用法。 MaxPermGen尺寸的增加不会产生任何影响(从128 Mb到256 Mb)。 还有什么其他原因可以为PermGen调用OOM? 在这种情况下(战略,工具等),最佳调查方案是什么? 谢谢你的帮助

使用死Groovy代码定位填充PermGen的代码

我们已经使用java.lang.OutOfMemoryError: PermGen space每两周对我们的glassfish实例进行一段时间的研究。 我将PermGen空间增加到512MB,并使用jstat -gc转储内存使用量。 两周后,我想出了下图,显示了PermGen空间是如何稳定增加的(x轴上的单位是分钟,y轴是KB)。 我试着用谷歌搜索某种可以查明错误的分析工具,并在SO上提到了一个提到jmap的post,这被certificate是非常有用的。 在从jmap -permstats $PID转储的大约14000行中,大约12500行包含groovy/lang/GroovyClassLoader$InnerLoader ,指向我们自己的Groovy代码或Groovy本身的某种内存泄漏。 我必须指出,Groovy构造的相关代码库不到1%。 示例输出如下: class_loader classes bytes parent_loader alive? type 3811 14830264 null live 0x00007f3aa7e19d20 20 164168 0x00007f3a9607f010 dead groovy/lang/GroovyClassLoader$InnerLoader@0x00007f3a7afb4120 0x00007f3aa7c850d0 20 164168 0x00007f3a9607f010 dead groovy/lang/GroovyClassLoader$InnerLoader@0x00007f3a7afb4120 0x00007f3aa5d15128 21 181072 0x00007f3a9607f010 dead groovy/lang/GroovyClassLoader$InnerLoader@0x00007f3a7afb4120 0x00007f3aad0b40e8 36 189816 0x00007f3a9d31fbf8 dead org/apache/jasper/servlet/JasperLoader@0x00007f3a7d0caf00 …. 那么我该如何继续了解更多关于导致此问题的代码? 在本文中,我推断我们的Groovy代码是在某处动态创建类。 从jmap的转储我可以看到大多数死对象/类(?)都有相同的parent_loader,虽然我不确定在这种情况下这意味着什么。 我不知道怎么从这里开始。 附录 对于后来者来说,值得指出的是, 接受的答案并不能解决问题 […]