问题标签 [permgen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2184 浏览

java - Java:“终身”内存与 permgen 相同吗?

我正在尝试收集有关我们偶尔遇到的问题的信息,在运行几周后,应用程序变慢,工作正常,变慢,工作正常,变慢和正常工作之间的间隔越来越短。我的理论是,随着时间的推移,我们会更频繁地收集垃圾。另一个关键信息是我们偶尔会遇到 OOM PermGen 问题。

我启用了verbose:gc,现在在catalina.out 中看到GC 输出。但是,我想我需要根据此处的信息添加 PrintGCDetails 标志:

http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html

启用后一个标志将打印出有关“Tenured”内存集合的信息。问题是,是导致 PermGen 错误的内存,还是有什么不同?如果它不同,我如何记录将显示 PermGen 空间的信息?

编辑——不幸的是,我无法在这个环境中附加任何 jvm 监控工具。

编辑——我添加了上述配置选项,以及一个用于打印终身分布的选项,我得到了类似的东西

ParNew 一代是 permgen 空间吗?

失败困扰着我。

提前感谢

0 投票
3 回答
2128 浏览

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

是内部类比普通类更轻量级,还是java最终像普通类一样编译内部类?

我知道java中的类本身并不是非常轻量级的,它们占据了permgen内存的一部分,所以我想知道是否最好使用类似闭包的函数作为内部类,或者标准类也可以吗?

0 投票
5 回答
57000 浏览

java - java.lang.OutOfMemoryError: PermGen 空间

我收到以下错误“http-9000-5”java.lang.OutOfMemoryError: PermGen space

org.apache.catalina.core.ApplicationDispatcher 调用 SEVERE: Servlet.service() for servlet jsp 抛出异常 java.lang.OutOfMemoryError: PermGen space。

我使用axis2的应用程序。我增加了堆大小1024mb。但它不起作用。会是什么问题。请解决

0 投票
4 回答
568 浏览

java - 使用 2 倍预期永久代空间量的字符串文字

这是 Sun JDK 1.6u21,x64。

我有一个类用于试验 perm gen 的使用,它只包含一个大字符串(512k 个字符):

getUsage().toString()我检查了永久代对象上使用的 perm gen 使用情况MemoryPoolMXBean(在 u21 中称为“PS Perm Gen”,尽管它具有不同版本或不同垃圾收集器的名称略有不同。

当我第一次引用该类时,例如通过 read Big0.class, perm gen 跳跃了 ~500 KB - 这是我所期望的,因为字符串的常量池编码是 UTF-8,并且我只使用 ASCII 字符。

然而,当我实际创建这个类的一个实例时,perm gen 会跳跃约 2 MB。由于这是一个 1 MB 的内存字符串(每个 UTF16 字符 2 个字节,当然没有代理),我对为什么内存使用量是两倍感到困惑。

如果我将字符串设为静态,也会出现同样的效果。如果我使用 final,它会编译失败,因为我超过了 65535 字节的常量池项目的限制(不知道为什么关闭 final 也可以避免这种情况——考虑一下这是一个额外的问题)。

任何见解表示赞赏!

编辑:我还应该指出,这发生在非静态、最终非静态和静态字符串中,但不适用于最终静态字符串。由于这已经是字符串常量的最佳实践,也许这主要是学术兴趣。

0 投票
5 回答
8803 浏览

java - java.lang.OutOfMemoryError:Web 应用使用的 PermGen 空间

我正在努力解决最近出现的 outOfMemory PermGen 问题。出现错误时保存的日志片段之一:

我增加了最大烫发大小-XX:MaxPermGen=128m,但这只是一个临时解决方案,因为我很确定我们在这里面临一些内存泄漏。我们应用程序的 Web 部分部署在 jetty (jsf + icefaces) 上。单击随机组件会增加使用的内存 - 我正在监视它,jstat -gcold几乎每次点击都意味着多 3-4kb。我已添加-XX:+TraceClassLoading到 jvm 参数中,当 Web 用户界面上有任何操作时,我会看到许多参数并被记录下来sun.reflect.GeneratedConstructorAccessorsun.reflect.GeneratedMethodAccessor当使用 99% 的 permgen 时,我还进行了堆转储。我使用 YourKit profiler 来分析堆。在类加载器选项卡中sun.reflect.DelegatingClassLoader,每行有 1 个类。什么可能导致内存不断增长?任何帮助将不胜感激。

在此先感谢,卢卡斯

0 投票
1 回答
765 浏览

clojure - Clojure 不会消耗太多的 perm-gen 空间吗?

我是 Cojure 的新手,但我读到在使用 AOT 编译时会为每个函数生成一个类。这不是意味着一大堆消耗perm-gen空间的类吗?没有任何问题吗?不使用 AOT 编译,而是动态生成字节码时怎么办?

0 投票
3 回答
4736 浏览

java - 如何查看 JVM 中的 MaxPermSize?

在 TomCat 上部署 Web 应用程序时,我遇到了可怕的PermGen:Out of memory错误。我尝试了许多可能的解决方案,但都没有成功(有时有效,通常无效)。我想知道我在“BuildConfig.groovy”中的配置是否生效:

有谁知道以某种方式查看JVM实际应用的MaxPermSize?

0 投票
1 回答
1287 浏览

java - Servlet 中的 JNDI 查找会导致 permgen 内存泄漏吗?

由于 JBoss 4.2 不支持 @EJB 注入,因此我使用 JNDI 查找来引用 Servlet 所需的 EJB。

我担心这种类型的查找可能会导致 JVM 中的 Permgen 非堆内存增长。

据我了解 JNDI,它是动态类加载的一种形式,因此这可能会导致类加载器泄漏。

所以我的问题是,随着时间的推移,下面的 servlet 代码是否可能导致 Permgen 内存泄漏?

另外,我应该在查找后显式调用 InitialContext 上的 close() 方法吗?由于在此处(在 Servlet 中)实例化它们的方式,GC 是否有可能没有按预期清理 InitialContexts?

谢谢你。

}

0 投票
4 回答
10290 浏览

java - Glassfish/Hibernate 的 PermGen 空间问题

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

我从这个页面得到了建议,发现我泄露了大量的类——我所有的 Hibernate 模型和我所有的 GWT RequestFactory 代理。

上面引用的指南说“检查链,找到意外引用并修复代码”。说起来容易做起来难。

类加载器总是指向一个org.glassfish.web.loader.WebappClassLoader. 进一步挖掘,我发现了很多来自$Proxy135和类似名称的对象的引用。但我不知道还有什么办法可以通过。

0 投票
2 回答
16729 浏览

java - PermGen 内存不足的原因

我不断在 PermGen 中为我的环境检测 OOM:

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

我知道 String.intern() 问题 - 但我没有足够有价值的用法。MaxPermGen 大小的增加没有影响(从 128 Mb 到 256 Mb)。

还有哪些其他原因可以为 PermGen 调用 OOM?在这种情况下,哪种调查方案最好(策略、工具等)?

谢谢你的帮助