我正在使用自定义类加载器来加载一些 java 类。我需要在循环中从这些加载的类中执行一些方法。对于每个循环迭代,我需要对所有类(所有静态字段)进行全新的初始化。我测量到,如果我为每次迭代使用新的类加载器,执行时间比在每次迭代中不使用新的类加载器时的执行时间慢三倍。
我可以在不使用新的类加载器加载它们的情况下将加载的类重置为其初始状态吗?
或者有没有办法加快在不同类加载器中重复加载相同类的速度?
我正在使用自定义类加载器来加载一些 java 类。我需要在循环中从这些加载的类中执行一些方法。对于每个循环迭代,我需要对所有类(所有静态字段)进行全新的初始化。我测量到,如果我为每次迭代使用新的类加载器,执行时间比在每次迭代中不使用新的类加载器时的执行时间慢三倍。
我可以在不使用新的类加载器加载它们的情况下将加载的类重置为其初始状态吗?
或者有没有办法加快在不同类加载器中重复加载相同类的速度?
当你用新的类加载器加载类时,JMV 几乎肯定会重新 jit 字节码。在此之前,新加载的类的第一次使用会比较慢。
我假设这些类是您无法修改的库代码?因为您必须以这种方式使用这些类的事实表明我的设计存在缺陷。
就在我的脑海中:你能用反射拍摄类的初始状态然后恢复它吗?