jruby - 泄漏对 jruby 运行时的引用,在重新加载应用程序后出现 PermGen OOM 错误

标签 jruby classloader permgen torquebox trinidad-gem

我的代码或我正在使用的 gems 中的某些东西正在泄漏对 JRuby 运行时的引用:每次我在 Torquebox、Trinidad 或其他任何地方重新加载应用程序时,permgen 都会填满,直到最终在太多次之后重新加载我得到一个 PermGen OOM 错误。

我该如何找出造成这种情况的原因?我寻找什么样的东西?我正在使用 JRuby 1.7.3,所以它不应该是 JRuby 本身的问题......

最佳答案

这可能是您使用 Hotspot 获得的最接近的结果,确保它清除 PermGen 内存:

JAVA_OPTS="-server -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseCodeCacheFlushing ..."

...如果有泄漏的引用阻止类被 GC-d,当然不会有帮助

关于jruby - 泄漏对 jruby 运行时的引用,在重新加载应用程序后出现 PermGen OOM 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18803365/

相关文章:

java - 在 Java Instrumentation Agent 中使用 Class.forName()

grails - 超过512M的内存限制

ruby - 将类方法委托(delegate)给ruby中的对象

ruby - JRuby 垃圾收集在 Rails 中运行单元和功能测试时抛出错误

jar - 从 jruby 中的 jars 导入的冲突类名

ruby - 如何设置 ruby​​ murmur 哈希的种子值

scala - 在 SBT 中为模块依赖项使用自定义类加载器

android - 在 Android 中动态加载类时发生 ClassCastException

garbage-collection - 为什么需要 3 次 Full GC 来对 permgen 进行垃圾回收?

maven - java.lang.OutOfMemoryError : PermGen space error