Java JBoss7中的jstl forEach标记,内存泄漏?

Java JBoss7中的jstl forEach标记,内存泄漏?,java,memory-leaks,jstl,profiling,jboss7.x,Java,Memory Leaks,Jstl,Profiling,Jboss7.x,YourKit探查器用于分析快照 为唯一用户执行的步骤: 代数增加了。 应用程序页面上的一些操作已经完成。它们中的大多数通过jstl forEach标记获取实体并显示它们。 注销已在会话中执行。无效 会话超时设置为5分钟。因此,我已经等待了6-8分钟,以确保会话中的所有内容都无效。 已通过YourKit探查器创建快照。 我发现: SomeEntity #3: Captured snapshot JBoss-2014-10-07-1.snapshot 11m 37s - 21m 43s 183 4

YourKit探查器用于分析快照

为唯一用户执行的步骤:

代数增加了。 应用程序页面上的一些操作已经完成。它们中的大多数通过jstl forEach标记获取实体并显示它们。 注销已在会话中执行。无效 会话超时设置为5分钟。因此,我已经等待了6-8分钟,以确保会话中的所有内容都无效。 已通过YourKit探查器创建快照。 我发现:

SomeEntity
#3: Captured snapshot JBoss-2014-10-07-1.snapshot 11m 37s - 21m 43s 183 4392 7896

<All the objects> 183 7896
    java.lang.Object[] 182 7832
        java.util.ArrayList 182 7832
            somePath.someImpl 167 7208
                java.lang.Object[] 164 7016
                    java.util.ArrayList 164 7016
                        org.apache.taglibs.standard.tag.rt.core.ForEachTag 164 7016
                somePath.someAnotherImpl 3 192
                    java.lang.Object[] 3 192
                        java.util.ArrayList 3 192
                            org.apache.taglibs.standard.tag.rt.core.ForEachTag 3 192
我们在这里看到的请纠正我,如果我错了,ForEachTag标签包含164+3个SomeEntity实例。我调查了jstl问题,发现问题已经重现。例如,和

但一开始它说doEndTag中没有可为null的对象是可以的,根据jsp规范,如果我错了,请修复我。第二,在上一个1.2JSTL版本中解决了一些问题。JBoss7使用的是1.2版本,因此,问题似乎仍然存在

其中一个解决方案是将doEndTag中的可空对象视为一种不好的做法

接下来,我重复了前面4个不同用户描述的操作。我可以发现org.apache.taglibs.standard.tag.rt.core.ForEachTag持有的对象数量现在是539+12


对我来说,这是一个内存泄漏。如果我错了,请纠正我。如果没有,在这种情况下我们能做什么?在doEndTag方法中是否可以为空对象?

我没有答案,但是我们看到Jboss 6和foreach标记非常类似。当我发现你的帖子时,我们正在继续调查,如果我们发现什么,我们会通知你

--编辑--

我们添加了这个修复程序,它解决了另一个内存泄漏问题,并且似乎也解决了每个问题

对于Jboss,我们更新了: