问题描述
- Perm区满,FullGC都GC不下来。 2C
- 最近发现一个问题,应用在运行过程中Perm区占用不断增加,多次FullGC之后都没有下降。查看Dump文件之后,发现系统加载了很多类似sun.reflect.GeneratedSerializationConstructorAccessor这种名字的类。尝试设置sun.reflect.inflationThreshold为整数最大值,也加了各种GC参数-XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=5,问题没有得到解决。请问什么情况下会出现这样的问题,急等!
p.s.这两个C币是我全部家产了,谢谢了。
解决方案
1、perm区多大,测试多少时间堆满。增大perm区有没有效果
2、参数杂七杂八的参数都去掉试试GC情况
3、设置-Xmn,调小年轻代,增大old区试试
4、CMS的XX:CMSInitiatingOccupancyFraction阀值可以调整着试试。
解决方案二:
楼主你好,我最近碰到了跟你一样的问题,也是反射,用jmap permstat 查看永久代有大量dead 的DelegatingClassLoader,但是从内存dump中没有发现任何蛛丝马迹,你说的xstream我们也用到了。
我看了下xstream的源码,你说的应该是这个类PureJavaReflectionProvider
private transient Map serializedDataCache = new WeakHashMap();
但是xstream最新版本用的还是WeakHashMap 很想知道你这个问题最后是怎么解决的,还望赐教,在此谢过。
时间: 2024-10-30 22:57:43