问题标签 [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.
java - 如何分析 PermGen 的内容?
我想得到 PermGen 的转储,看看它为什么会被填满。有没有办法分析这个?我已经知道 log4j、tomcat webapp 重新加载等常见嫌疑人,但我的应用程序中也有一些自定义代理生成代码,只是想看看幕后。
这有可能吗?
java - 使用 PermGen 空间或 roll-my-own 实习生方法?
我正在编写一个编解码器来处理使用定制的有线协议通过 TCP 发送的消息。在解码过程中,我创建了许多String
s、BigDecimal
s 和日期。客户端-服务器访问模式意味着客户端发出请求然后解码数千条响应消息是很常见的,这会导致大量重复 String
的s,BigDecimal
s等。
因此,我创建了一个InternPool<T>
类,允许我实习每个类的对象。在内部,池使用WeakHashMap<T, WeakReference<T>>
. 例如:
我的问题:我正在使用InternPool
forBigDecimal
但我是否应该考虑也使用它String
而不是 String
'intern()
方法,我认为该方法使用 PermGen 空间?使用 PermGen 空间有什么好处?
maven-2 - 如何增加给予 maven-glassfish-plugin 的内存?
我正在为嵌入式 Glassfish 使用 Maven 插件 - 这是我的插件声明:
在我的数据密集型 Web 应用程序中单击几下后,我的 PermGen 空间用完了。
java.lang.OutOfMemoryError: PermGen 空间
我已经将 MAVEN_OPTS 配置为使用更多内存:
但看起来生成的 Java 进程mvn glassfish:run
在占用之前只获得了大约 0.5 GB 的内存。
Glassfish 插件是否有任何配置设置来增加其内存?
谢谢!
java - 增加永久空间
我正在使用 tomcat 6.0,并且在我编制索引时(不是在我启动 tomcat 时),我有一个 permgen 空间错误。
我怎样才能增加那个空间?
谢谢
java - Maven 构建中的“java.lang.OutOfMemoryError:PermGen 空间”
我在构建 Maven 项目时遇到了这个错误,我增加了 MAVEN_OPTS 但都是一样的,我发现了一些类似的帖子,但它们指的是别的东西。我该如何解决?
我并不担心如何在 Maven 生态系统中修复它
java - PermGen 大小未扩展以填充最大可用空间
我有一个 java 进程正在运行。使用 jstat 我可以看到 permgen 利用率和容量几乎相同。即当前容量几乎已满,但仍远低于指定的最大 permgensize。
这是标准还是我应该期望看到一定程度的净空空间分配?
标准 Sun 1.5 JVM
java - 我有 JAXB 类加载器泄漏吗
我在 Glassfish 上部署了一个应用程序。随着时间的推移,加载类的数量攀升至数百万,我的 permgen 似乎也在增加。
为了帮助排除故障,我将以下内容添加到我的 jvm 参数中。-XX:+PrintGCDetails -XX:+TraceClassUnloading -XX:+TraceClassLoading
现在在查看输出时,我看到相同的类被一遍又一遍地加载。基本上每次调用 Web 服务并使用 JAXB 来处理 xml。
[从 JVM_DefineClass 加载 com.strikeiron.ZIPCodesInRadius$ JaxbAccessorF_userID ] [从 JVM_DefineClass 加载 com.strikeiron.ZIPCodesInRadius$ JaxbAccessorF_userID ]
这是否表明泄漏?如果是这样,我该如何解决?
tomcat - 在 Tomcat 中使用 JRuby on Rails 跟踪 PermGen 问题
我们正在运行一个在 Tomcat 下运行的小型 Web 应用程序,该应用程序编写为 JRuby on Rails。我们正在使用与另一个生产 Web 应用程序共享的 Spring 后端。不幸的是,我们不断遇到 PermGen 问题。
操作系统:Ubuntu Linux 2.6.24-24-server #1 SMP x86_64 GNU/Linux Java:1.6.0_21 Tomcat:6.0.28 JRuby:1.5.0 Rails:2.3.7
我们目前正在被谷歌、雅虎和百度抓取,因此网站使用率上升。我一直在使用 JConsole 监视 Tomcat,我们肯定看到了过多类的问题。当 tomcat 启动时,我们加载了大约 12,000 个类。8 小时后,我们加载了近 75,000 个课程。PermGen 同时从 100MB 增加到 460MB。
类卸载正在工作,但它仅在同一 8 小时内卸载了约 500 个类。PermGen 似乎永远不会被收集。
我们正在使用 Tomcat 的以下 VM 选项运行:
显然有某种泄漏。问题是如何在哪里?关于如何追查谁和什么对此负责的任何建议?我希望这是我们的一些非常愚蠢的错误,但我不知道从哪里开始。
任何建议将不胜感激。
编辑
看起来我们正在为每个传入的请求创建一个新类。
编辑 2
它肯定与 JRuby 有关。使用 JConsole,我为类加载器启用了详细模式。这是来自 catalina.out 的示例:
所以问题变成了我如何追踪负责创建这些额外课程的一方?
编辑 3
不确定这是否是问题所在,但不知何故,我们最终得到了大量的类加载器。跑jmap -permstat PID
了,得到:
这似乎有点过分了。大多数是以下三种类加载器之一sun.reflect.DelegatingClassLoader
:org.jruby.util.JRubyClassLoader
或org.jruby.util.ClassCache$OneShotClassLoader
。同样,示例输出来自jmap -permstat
:
java - Netbeans Java 调试器因内存不足错误而崩溃
最近,在使用 Netbeans 6.8 开发 JSF Web 应用程序时,我不断收到 PermGen:内存不足错误。我还注意到,正如论坛上的一些人所建议的那样,这与热交换代码无关;每当我重新部署代码时,我通常会重新启动本地 Web 服务器 Tomcat 6.0。这曾经偶尔发生在我身上,但最近,它一直在发生。我通常不能在它崩溃之前超过两分钟。
我对这个问题的重要观察是,它似乎只在运行调试器时发生。如果我定期启动服务器,它将无限期地运行。一旦我在调试模式下运行,就会出现这个问题。
到目前为止,我已经尝试了所有在 Tomcat 中增加 Java 的 JAVA_OPT 内存设置的技巧;我尝试在 netbeans.conf 中增加 Netbeans 的可用内存。仍然没有运气。如果您想查看我所做的特定配置更改,我也可以发布。
我还读到这可能是 Java 内存泄漏的结果。我试过运行 Netbean 的分析器,但在我做任何真正有用的事情之前它通常也会崩溃。此外,当它运行时,所有具有荒谬世代的对象分配都是 Java 库或原语中的东西—— char[]s 是应用程序最大的内存消耗,例如,具有最大世代。
我真的很想知道以前是否有人遇到过类似的问题,如果有,他们是如何解决的。这开始严重阻碍我完成工作的能力。
谢谢你的帮助。
grails - 有没有办法在同一个 Web 服务器上运行多个 Grails 应用程序而不会遇到 PermGen 错误?
我们正在开发一些 Grails 应用程序,并在 Jetty 上部署 WAR。当我们一次运行每个应用程序时,它们会徘徊在大约 200 - 300 MB 的内存上,这是完全可以接受的。但是,添加更多应用程序会增加内存占用......很多。一旦我们运行了三个应用程序,我们通常最终会崩溃大约 900 MB。
所有三个应用程序都有 Quartz 作业。我尝试增加 PermGen 的大小,但无济于事。并且向 Web 服务器添加更多内存不是一种选择。有没有一种简单的方法可以减小 Grails 应用程序的大小?