【问题标题】:reflection classes keeps on increasing反射类不断增加
【发布时间】:2014-03-14 06:31:49
【问题描述】:

我可以在我的应用程序中看到加载的类的数量不断增加as discussed here

在使用 yourkit 和堆栈溢出社区的帮助时,我能够得出结论,类的增加是因为反射类被动态创建,如下所示:

  1. GeneratedConstructorAccessorXX
  2. GeneratedMethodAccessorXX
  3. GeneratedSerializationConstructorAccessorXX

    XX 是某个数字。

根据我的知识以及在googling 之后我了解到的情况,这些是反射用来访问存储在内存中的对象信息的运行时代理。这些访问器被缓存,因此它们不必每次都重新生成。这些类对象每个类加载器都是单例的,因此对于给定类的每个类加载器,我们只有一个生成的访问器实例。 如果是这种情况,为什么我在运行重复测试时看到加载的类增加了。

更新* 在进一步的分析中,我观察到负载的增加具体是因为 GeneratedSerializationConstructorAccessor。

【问题讨论】:

    标签: java performance memory-leaks garbage-collection profiling


    【解决方案1】:

    我将在下面分享我的发现并接受这个作为答案,除非其他人提供更好的东西。 在进一步分析和使用您的工具包检查堆栈跟踪时,我能够看到在进行任何 EJb bean 调用时创建了GeneratedSerializationConstructorAccessor。尽管并不是每个请求都创建了新的此类。 发现的另一个观察结果是,另一个使用 EJB bean 的应用程序也部署在同一个 jboss 服务器上,并且是测试的一部分,但我们在那里没有遇到任何此类问题。

    我可以看到的一个区别是,后来没有发现此类问题的应用程序使用的是 EJB 3.X,而发现问题的应用程序使用的是 2.X。 可能是旧版本造成了问题。 它已被确定不是一个表演停止者,其表演将在制作中被观看。

    【讨论】:

      猜你喜欢
      • 2014-03-25
      • 2019-09-06
      • 2015-07-05
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 2021-08-19
      • 2020-12-08
      • 1970-01-01
      相关资源
      最近更新 更多