【问题标题】:How to reset loaded classes fast in java?如何在java中快速重置加载的类?
【发布时间】:2012-04-23 23:05:03
【问题描述】:

我正在使用自定义类加载器来加载一些 java 类。我需要在循环中从这些加载的类中执行一些方法。对于每个循环迭代,我需要对所有类(所有静态字段)进行全新的初始化。我测量过,如果我在每次迭代中使用新的类加载器,执行时间比在每次迭代中不使用新的类加载器时的执行时间慢三倍。

我可以在不使用新的类加载器加载的情况下将加载的类重置为其初始状态吗?

或者有没有办法加快在不同类加载器中重复加载相同类的速度?

【问题讨论】:

    标签: java performance classloader


    【解决方案1】:

    当您使用新的类加载器加载类时,JMV 几乎肯定必须为re-jit the byte code。在此之前,新加载的类的第一次使用会比较慢。

    我假设这些类是您无法修改的库代码?因为你必须以这种方式使用这些类的事实表明我的设计存在缺陷。

    【讨论】:

    • 这是一项安全功能。类由用户上传并在服务器系统内执行。
    【解决方案2】:

    从我的脑海中浮现出来:您能使用反射对类的初始状态进行快照,然后将其恢复吗?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多