多个用户在应用程序中登录时出现java OutOfMemoryError异常和Metaspace错误

时间:2017-11-03 06:11:06

标签: java garbage-collection jvm

在我的应用中,当多个用户(至少 10个用户)同时从不同位置登录时,该应用程序显示 2个错误: -

1) OutOfMemoryError 异常(堆空间/ GC错误)
和,

2)元空间错误(在jdk-8环境中)。

有关您的信息,该应用程序正在64位Windows 7系统上运行,并且正在使用jdk-8环境。 jvm参数在环境中设置为1.5Gb,如下所示: -

-XX:PermSize = 1024m -XX:MaxPermSize = 1512m

我需要2条指导:

1)请建议解决GC问题的解决方案,以便任意数量的用户可以同时访问该应用程序。

2)另外请提供关于如何解决元空间错误的概念以及如何增加应用程序的默认元空间大小。

感谢。

1 个答案:

答案 0 :(得分:0)

  • 类和类元数据存储在Metaspace
  • 静态以及动态加载的类
  • Metaspace不是Java堆的一部分,是从本机分配的 存储器

java.lang.OutOfMemoryError:Metaspace

  • 默认情况下,元数据空间不受限制
  • MaxMetaspaceSize:此异常 意味着Metaspace已满载了所加载的类及其类 元数据,并且应用程序正在请求加载更多类 JVM已经调用了Full GC但无法释放任何空间 Metaspace
    • 表示:Metaspace的大小小于 类及其元数据或应用程序的足迹 无意中持有Metaspace中的一些类

尝试通过调用以下选项来增加堆大小内存

-Xmx

如果要增加Metaspacesize,请调用以下选项。

-XX:MetaspaceSize=m -XX:MaxMetaspaceSize=n