相关疑难解决方法(0)

处理"java.lang.OutOfMemoryError:PermGen space"错误

最近我在我的Web应用程序中遇到了这个错误:

java.lang.OutOfMemoryError:PermGen空间

这是在Tomcat 6和JDK 1.6上运行的典型Hibernate/JPA + IceFaces/JSF应用程序.显然,重新部署应用程序几次后就会发生这种情况.

导致它的原因以及可以采取哪些措施来避免它?我该如何解决这个问题?

memory-leaks exception out-of-memory permgen java-6

1215
推荐指数
17
解决办法
102万
查看次数

在JDK 8中消除PermGen

我已经安装了JDK 8并尝试运行Eclipse.我收到以下警告信息:

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m;
support was removed in 8.0 
Run Code Online (Sandbox Code Playgroud)

忽视这个论点的原因是什么?

java jvm permgen java-8

220
推荐指数
6
解决办法
17万
查看次数

年轻,终身和烫发一代

我对Heap,Young,Tenured和Perm一代感到困惑.

有人可以解释一下吗?

java garbage-collection jvm heap-memory

61
推荐指数
3
解决办法
4万
查看次数

Java 6和Java 7中的字符串文字的垃圾收集(Oracle Jdk)

根据著名本书深入浅出Java页面661:

" Garbage Collector doesn't go inside String pool."

在阅读了关于SO的类似问题后,我发现了如下混合答案:

  1. 字符串文字的垃圾收集与普通对象相同. 读这个
  2. 一些答案反过来说.在这里阅读答案.

我的问题是:

  1. 如何在Java 6及之前收集字符串文字垃圾?

  2. 因为在Java 7中,将在堆上创建字符串文字,与Java 6相比,Java 7中字符串文字的垃圾收集将如何不同?

java string garbage-collection

11
推荐指数
1
解决办法
555
查看次数

使用多个类加载器保存PermGen空间

我们在Scala中编写了一个包含大量类的大型GUI应用程序,我们必须增加PermGen空间才能加载所有类.应用程序本身显示了一系列基于屏幕的活动,每个活动都加载了自己的大型类.在任何时间点只加载/显示一个活动.经过几项活动后,我们OutOfMemoryError在PermGen领域有了一个.

我知道PermGen空间是垃圾收集的,就像堆的其余部分一样,但我很想知道是否可以减少所需的PermGen空间,例如ClassLoader每个活动一个,以便允许类卸载.

所以:

  1. 我知道系统ClassLoader加载的类无法卸载,因为它们将永远被类加载器引用.真的吗?
  2. 如果我的自定义类加载器不再加载类的实例,并且类加载器可以被垃圾收集,它的类是否会被卸载,释放PermGen空间?
  3. 是否有任何关于(或常见的错误会阻止)课堂卸载的警告?

java permgen classloader

6
推荐指数
1
解决办法
1510
查看次数