泽西岛2可能出现内存泄漏?

Kir*_*ran 5 java jersey jersey-2.0 spring-boot java-mission-control

我最近将我的REST API从Jersey 1迁移到Jersey 2(确切地说是2.22.1).该应用程序作为春季启动应用程序运行.该应用程序收到相当大的流量.我使用JMC(Java Mission Control)分析了应用程序,并注意到Annotations(getEntityAnnotations())消耗了大量内存.jms截图中的更多细节:

jms截图

从屏幕截图中可以看到312个Annotation[]对象拥有1.55 GB的内存(每个阵列大约5 MB).我在getEntityAnnotations()方法中有突破点,并观察到Annotation[]只包含3个注释(HTTP方法,路径和消耗).Annotation对象只有几个字段.我无法解释大字段的原因.调试器截图中的更多细节:

调试器截图

有没有人遇到过类似的问题?

除了jms截图,我们可以观察到一半的内存来自Arrays.copyOf.这是因为类中的getEntityAnnotations()方法OutboundMessageContext克隆了entityAnnotations数组.这个特殊的实施已添加到球衣2.5作为机票JERSEY-2072的一部分.

我正在使用Java 1.8.0_60和spring boot 1.3.2.RELEASE.如果您需要有关应用程序或环境的任何其他详细信息,请与我们联系