加载类总数不断增加

Rip*_*ips 5 java performance jvm performance-testing jboss7.x

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

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

Test a = (Test) Class.forName(className, false, Test.class.getClassLoader()).newInstance();
Run Code Online (Sandbox Code Playgroud)

这能是一个理由吗?如果上述代码语句中的类名相同,则调用 class.forName 是否会一次又一次加载相同的类。

应用服务器:Jboss 6.1 EAP

JDK:1.6.27

sak*_*ura 3

由于类加载器是相同的,因此它不会再次加载该类。仅当您有多个类加载器在不同时间点加载类时,才可以再次重新加载同一个类。

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