`

2006年遇到的CGLib造成的Perm Space out of memory错误

阅读更多

疑难杂症类别是总结了笔者这么多年来开发的经验总结

 

2006年开发公司里的一个产品时,发现了一个很难解决的问题:

 

问题现象:Tomcat跑一天Perm Space 报outofMemory的错误,后来就调整JVM的PermSize,调大后,一天稍长时间又出现这个错误,有点晕了。

 

环境:JDK1.5,Tomcat5,Hibernate+Spring

 

问题解决:想了半天,原来Hibernate 采用CGLib实现了lasy load的功能,其间要生成新的class,这些class,如果GC不回收,Perm Space当然迟早会溢出。后来一查果然是这个问题CGLib有个bug,每次lasy-load都会生成新的class,后来更新了一个新的包,问题解决。

分享到:
评论

相关推荐

    PermGen space

    #### 为何会出现PermGen Space的Out of Memory Error? 当应用程序加载了大量的类或者动态生成了很多类(例如通过字节码生成工具或预编译操作),PermGen Space可能会迅速耗尽。特别是在Web应用环境下,如部署Web...

    java OOM内存泄漏原因及解决方法

    Java OOM(Out Of Memory)是指Java虚拟机(JVM)因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时抛出的错误。出现OOM的原因主要有两点:一是分配的少了,即虚拟机本身可使用的内存太少;...

    阿里巴巴 面经

    - **PermGen Space**:存放类元数据,已被Metaspace取代。 - **Metaspace**:存放类元数据,位于本地内存中,不受垃圾回收机制管理。 **45. 出现OOM如何解决** - 调整JVM参数,增加堆内存大小。 - 优化代码,避免...

Global site tag (gtag.js) - Google Analytics