2024-10-26  阅读(15)
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/9660026049

回答

元空间溢出一般都是由于应用程序加载过多的类信息引起的。大致情况有如下几种:

  • 类加载过多

如果我们在应用程序中大量使用动态代理、字节码生成库(如 JavassistCGLIB ),频繁生成新类,则可能会耗尽元空间。

  • 反射

和动态代理一样,如果我们在应用程序中大量使用反射,则也会导致元空间溢出。比如在循环中使用反射。

  • 类加载器泄露

如果我们自定义的类加载器没有被及时回收,或者引用了被加载的类,则也会造成元空间溢出。

在实际生产过程中,大明哥遇到过反射和自定义类加载器而导致的元空间溢出。关于元空间的溢出排查,这两篇文章不错,各位小伙伴可以参考参考: