我在Sun的JRE6中运行Tomcat6,并且每对夫妇都部署了OutOfMemoryException:PermGen.我已经完成了PermGen解决方案的谷歌搜索,并尝试了许多修复.没有工作.我读了很多关于Oracle的JRockit的好东西,以及它的PermGen分配大小如何(与Sun的128M相比)虽然它没有解决问题,但它允许我在PermGen异常之间重新部署100次而不是2现在的时间.
JRockit的问题是在生产中使用它需要购买价值数千美元的WebLogic.还有哪些其他(免费)选项可以更宽容PermGen扩展?以下JVM如何在这个领域做?
...其他?
更新:有人问我为什么认为PermGen max是128M.原因是因为每当我尝试将其提升到128M以上时,我的JVM都无法初始化:
[2009-06-18 01:39:44] [info] Error occurred during initialization of VM
[2009-06-18 01:39:44] [info] Could not reserve enough space for object heap
[2009-06-18 01:39:44] [395 javajni.c] [error] CreateJavaVM Failed
奇怪的是它没有尝试为对象堆保留空间,尽管我不确定它是"堆"而不是"堆".
我使用1024MB初始和1536MB最大堆启动JVM.
我会关闭这个问题,因为它已被回答,即."切换是无用的",而是问为什么我的Sun JVM会因为更大的PermGen设置而失败?
我同意Michael Borgwardt的说法,你可以增加PermGen的大小,我不同意这主要是因为内存泄漏.PermGen空间被大量使用Reflection的应用程序侵占.所以基本上如果你有一个在Tomcat中运行的Spring/Hibernate应用程序,那么就要准备好让PermGen空间大量增加.
| 归档时间: |
|
| 查看次数: |
7071 次 |
| 最近记录: |