- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在标准 Lift 平台(maven 和 jetty)上进行开发。我反复(每两天一次)得到这个:
Exception in thread "7048009@qtp-3179125-12" java.lang.OutOfMemoryError: PermGen space
2009-09-15 19:41:38.629::WARN: handle failed
java.lang.OutOfMemoryError: PermGen space
这是在我的开发环境中。这不是问题,因为我可以继续重新启动服务器。在部署中我没有这些问题,所以这不是一个真正的问题。我只是好奇。
我对 JVM 了解不多。我认为我认为永久代内存用于类和实习字符串之类的东西是正确的?我记得有点和.NET内存模型混淆了……
发生这种情况的任何原因?默认值是不是非常低?它是否与 Scala 必须为 Function 对象和类似的 FP 事物创建的所有辅助对象有关?每次我用新编写的代码(每隔几分钟)重新启动 Jetty 时,我想它会重新加载类等。但即便如此,它不可能有那么多可以吗?而且JVM不应该能够处理大量的类吗?
干杯
乔
最佳答案
来自 this post :
This exception occurred for one simple reason :
thepermgenspace
is where class properties, such as methods, fields, annotations, and also static variables, etc. are stored in the Java VM, but this space has the particularity to not being cleaned by the garbage collector. So if your webapp uses or creates a lot of classes (I’m thinking dynamic generations of classes), chances are you met this problem. Here are some solutions that helped me get rid of this exception :
-XX:+CMSClassUnloadingEnabled
: 此设置启用 permgenspace 中的垃圾回收-XX:+CMSPermGenSweepingEnabled
: 允许垃圾收集器从内存中删除偶数类-XX:PermSize=64M -XX:MaxPermSize=128M
:提高分配给 permgenspace 的内存量这可能会有所帮助。
2012 年 7 月编辑(将近 3 年后):
Ondra Žižka评论(我已经更新了上面的答案):
JVM 1.6.0_27 says: Please use:
CMSClassUnloadingEnabled
(使用CMS GC时是否开启类卸载)CMSPermGenSweepingEnabled
关于memory - 电梯和码头的 PermGen 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1451648/
运行 Tomcat 失败并出现 java.lang.OutOfMemoryError - 与缺少 PermGen 空间相关的错误。 我最近将 Tomcat 更改为以自己的用户(而非 root)运行。
我需要一些信息: 我有 2 个带有 TOMCAT 7.0.28 和 JAVA jdk1.7.0_05 的 redhat 6.1 Linux 服务器 在 192.168.1.20(TOM04) 上,我有
我知道在JVM中,permgen区是用来存放类定义的。在我的 Tomcat 中,我看到 permgen 的当前内存使用量接近 100MB,似乎它只是随着时间的推移而增长,即使没有人使用 Tomcat
我正在尝试增加我的应用程序必须使用的 PermGen 空间量以避免一些 PermGen 错误。 我尝试将 JAVA_OPTS 和 MAVEN_OPTS 导出为 -Xms1024m -Xmx2048m
我遇到了一个非常严重的生产问题,我希望有人能提供帮助。 我正在使用 Spring 3.1.0 并且对其功能印象深刻。 在开发过程中,一切正常。不幸的是,在部署到生产环境时,我们遇到了一些问题。 我们正
next java release附带 removal of the permanent generation来自热点 JVM。 Java 开发人员应该知道的后果是什么? 最佳答案 来自您链接的 JE
我有一个关于 PermGen 内存分配过多的问题。 我写了一个小代码来监控这个内存空间的大小,我注意到几乎每个方法执行后分配的内存大小都会增加。也许我的应用程序中有很多全局对象?有没有办法知道在 Pe
有没有一种工具/方法可以监控 tomcat 内存使用情况,即 permgen 以避免出现如下问题。是的,我们可以增加内存并调整 GC,但仍然进行一些监控会更好。当达到某些关键内存消耗时,还希望发送警告
org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet default t
环境:Windows Server 2003 x86 Intel Xeon 2.3 4gb Ram | Tomcat 7.0.27 | jdk 1.7.0.25 我遇到了 OutOfMemoryErr
我有 tomcat 7.0.47,grails 2.3.7 中的一个项目和 windows 2003 中 RichFaces 4.3.4 中的 2 个项目 服务器(2Gb RAM)。如果我在 tomc
嘿,我在 Windows 上,我正在尝试部署 Tomcat,但我一直收到 permgen 内存异常。我读到您可以通过添加 JAVA_OPTS="-server -Xms128M -Xmx256M -X
我有一个正在运行的java进程。通过 jstat,我可以看到 permgen 利用率和容量几乎相同。即当前容量几乎已满,但仍远低于指定的最大 permgensize。 这是标准还是我应该期望看到一定程
我正在为在 JBoss 上运行的应用程序使用 JAVA 5(32 位)。但它仅适用于 32 位。当我们在 64 位 java5 上部署它时,它会抛出异常 "java.lang.OutOfMemoryE
我从官方oracle网站找到了图片 但在流行SO answer我发现永久代不是堆的一部分 Permanent Generation (non-heap): The pool containing al
我想知道 JVM 是否正常卸载类以减少 PermGen 空间。所以这是我的问题: Java 类是否会默认从 JVM 中卸载? 关闭 Jar 类加载器是否会卸载该 jar 中所有已加载的类? 应该使用什
我试图了解 HotSpot JVM 的内存结构,但对“方法区” 和“PermGen” 空间这两个术语感到困惑。我提到的文档说方法区包含类和方法的定义,包括字节码。其他一些文档说它们存储在 PermGe
java中PermGen空间的意义是什么? 最佳答案 PermGen 空间是为长期对象保留的——主要是由 ClassLoader 加载的 Class 对象。 PermGen 不会被垃圾回收,除非在非常
我知道有很多关于这个问题的问题和答案;我已经尝试了 8 或 10 种对其他人有用的不同方法,并且觉得需要分析错误的地方而不是反复试验。 我在 Windows 64 位机器上运行,Spring Tool
在我的进程中,我不断创建一个新的 Thread 对象(实际上是 Thread 的子类)(每秒最多几个),运行它并干净地结束。 我注意到,例如,当进程运行 25 天时,进程可能会死亡,留下 hprof,
我是一名优秀的程序员,十分优秀!