【问题标题】:jstl forEach tag in jBoss 7, memory leak?jBoss 7中的jstl forEach标签,内存泄漏?
【发布时间】:2014-12-01 19:39:40
【问题描述】:

YourKit profiler 用于分析快照。

已执行的步骤(针对唯一用户):

  1. 代数已增加。
  2. 应用程序页面上的一些操作已完成。他们中的大多数都通过 jstl forEach 标签获取实体并显示它们。
  3. 已执行注销 (session.invalidate())
  4. 会话超时设置为 5 分钟。因此,我等待了 6-8 分钟以确保会话中的所有内容都无效。
  5. 已通过 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问题,发现问题已经重现。例如herehere

但根据 jsp 规范,起初据说 doEndTag 中不可为空的对象是可以的(如果我错了,请纠正我)。其次,在最新的 1.2 jstl 版本中解决了一些问题。 jBoss 7使用的是1.2版本,看来问题还是存在的。

解决方案之一 - 将 doEndTag() 中的可空对象视为一种不好的做法。 See here the reason

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

至于我,这是内存泄漏。如果我错了,请纠正我。如果不是,在这种情况下我们能做什么?要在 doEndTag 方法中为 null 的对象吗?

【问题讨论】:

    标签: java memory-leaks jstl profiling jboss7.x


    【解决方案1】:

    我没有给你答案,但我们看到 Jboss 6 和 foreach 标记非常相似。我们会继续调查(当我发现您的帖子时),如果我们发现任何问题,我们会通知您。

    --- 编辑 ---

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

    对于 Jboss,我们更新了:

    <subsystem xmlns="urn:jboss:domain:web:1.4" default-virtual-server="default-host" instance-id="${jvmRoute}" native="false">
    
                <configuration>
    
                    <jsp-configuration trim-spaces="true" tag-pooling="false"/>
    
                </configuration>

    我相信这是在standalone.xml 文件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 2017-07-14
      • 1970-01-01
      • 2022-11-21
      • 1970-01-01
      相关资源
      最近更新 更多