【发布时间】:2018-07-31 17:50:01
【问题描述】:
将应用程序升级到 Java 8 后遇到问题。
基于 APM 图的观察:
从 40K 加载到 120K 的类突然跳跃,同时元空间从 20Mb 爬升到 256Mb(现在已删除它的最大定义)。
错误:java.lang.OutOfMemoryError: Metaspace
GC 数据:*[Full GC (Last ditch collection) [PSYoungGen: 0K->0K(1394688K)] [ParOldGen: 68568K->68568K(2796544K)] 68568K->68568K(4191232K), [Metaspace: 251049K->251049K(1239040K)], 0.2309780 secs] [Times: user=0.32 sys=0.00, real=0.23 secs]*
• 120k 类文件正在加载到元空间内存中,但没有被卸载。
相关JVM参数:
-Xms256M \
-Xmx4g \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:+PrintGCDetails \
-XX:+TraceClassUnloading \
-XX:+TraceClassLoading \
-XX:HeapDumpPath=/somepath \
-XX:MetaspaceSize=64m \
我最近添加了 TraceClassUnloading 和 TraceClassLoading 来获取根本原因。
任何其他解决方案都会非常有帮助,如果需要更多信息,请告诉我。
【问题讨论】:
标签: java memory jvm out-of-memory heap-memory