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

时间:2016-05-23 15:32:02

标签: java spring-boot jersey jersey-2.0 java-mission-control

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

jms screenshot

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

debugger screenshot

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

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

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

0 个答案:

没有答案