gpt4 book ai didi

reflection - Sun JVM 在运行时创建 sun.reflect.DelegatingClassLoader 的实例是什么?

转载 作者:行者123 更新时间:2023-12-03 14:05:07 42 4
gpt4 key购买 nike

在使用 jhat 分析堆转储时,我观察到创建了许多 DelegatingClassLoader 实例,尽管它们没有在代码中显式调用。我希望这是某种反射优化机制。有人知道细节吗?

最佳答案

是的,这可能是反射优化。

在 Sun JVM 上,对属性和方法的反射访问最初是通过 JNI 调用到 JVM 实现中来执行的。如果 JVM 注意到一个方法或字段被反射访问了很多,它会生成字节码来做同样的事情——它称为“膨胀”的机制。这有一个初始速度命中,但之后运行速度大约快 20 倍。如果您进行大量反射(reflection),将是一个巨大的胜利。

该字节码存在于由 DelegatingClassLoader 实例创建的类中。请密切注意:这些类可能会对 permgen 空间施加压力,并导致可怕的“java.lang.OutOfMemoryError: PermGen space”失败。如果这是一个问题,您可以通过将系统属性 sun.reflect.inflationThreshold 设置为 0(零)来关闭通货膨胀。

关于reflection - Sun JVM 在运行时创建 sun.reflect.DelegatingClassLoader 的实例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6505274/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com