ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### prommotion failed 从S区晋升的对象在老年代也放不下导致 FullGC(fgc 回收无效则抛 OOM) 可能原因: * **survivor 区太小,对象过早进入老年代** 查看 SurvivorRatio 参数 * **大对象分配,没有足够的内存** dump 堆,profiler/MAT 分析对象占用情况 * **old 区存在大量对象** dump 堆,profiler/MAT 分析对象占用情况 你也可以从full GC 的效果来推断问题,正常情况下,一次full GC应该会回收大量内存,所以**正常的堆内存曲线应该是呈锯齿形**。如果你发现full gc 之后堆内存几乎没有下降,那么可以推断:**堆中有大量不能回收的对象且在不停膨胀,使堆的使用占比超过full GC的触发阈值,但又回收不掉,导致full GC一直执行。**换句话来说,可能是**内存泄露**了。 一般来说,GC相关的异常推断都需要涉及到**内存分析**,使用`jmap`之类的工具dump出内存快照(或者 Arthas的`heapdump`)命令,然后使用MAT、JProfiler、JVisualVM等可视化内存分析工具