【问题标题】:Total no of loaded classes count keeps increasing加载的类总数不断增加
【发布时间】:2014-03-25 21:52:03
【问题描述】:

当我们发现加载的类没有持续增加导致非堆内存增加时,我们正在对我们的一个旧应用程序进行性能测试。

现在我正在寻找根本原因,我能想到的一件事是,我们在几个地方使用 Class.forName,如下所示:

Test a = (Test) Class.forName(className, false, Test.class.getClassLoader()).newInstance();

这可能是一个原因吗? 如果上面代码语句中的classname相同,那么调用class.forName是否会一次又一次地加载相同的类。

应用服务器:Jboss 6.1 EAP

JDK :1.6.27

【问题讨论】:

  • 您是否有一些代码可以在运行中生成类(可能用于 AOP 或代理)?
  • 我们正在使用 EJB,所以是的,我们将为要创建的 bean 对象使用 ejb 代理。

标签: java performance jvm jboss7.x performance-testing


【解决方案1】:

由于类加载器是相同的,它不会一次又一次地加载该类。只有当您有多个类加载器在不同的时间点加载类时,才能再次重新加载同一个类。

每个类加载器,首先检查它要加载的类是否已经加载。如果它没有加载,那么只有它会加载它。

【讨论】:

    猜你喜欢
    • 2012-08-31
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2015-07-05
    • 2015-09-15
    • 2019-05-04
    • 1970-01-01
    • 2019-12-30
    相关资源
    最近更新 更多