使用 Nashorn 时大量未加载的 LambdaForm 类
Huge amount of unloaded LambdaForm classes when using Nashorn
我正在构建一个调用自定义 Nashorn 脚本的框架,该脚本又会注册谓词、比较器等。
即
function init (context)
{
context.registerFilter("name", function(item) {
... Do some filter of item
});
}
然后在 Java 方面,我使用已注册的过滤器。当长时间对很多项目执行此操作时,我看到 java.lang.invoke.LambdaForm$DMH/BMH 类型的大量卸载 类
这正常吗,我应该担心将其投入生产吗?
我尝试过不同的 JVM(1.8 u152、u161、u162),它们的行为都相同。
Nashorn 为每个方法调用生成 invokedynamic 指令,属性 set/get 来自 JS。 LambdaForms 由 JDK 生成以处理那些 invokedynamic 指令。您提到那些 类 已卸载。除非您发现严重的性能问题,否则您无需担心。
我正在构建一个调用自定义 Nashorn 脚本的框架,该脚本又会注册谓词、比较器等。
即
function init (context)
{
context.registerFilter("name", function(item) {
... Do some filter of item
});
}
然后在 Java 方面,我使用已注册的过滤器。当长时间对很多项目执行此操作时,我看到 java.lang.invoke.LambdaForm$DMH/BMH 类型的大量卸载 类 这正常吗,我应该担心将其投入生产吗?
我尝试过不同的 JVM(1.8 u152、u161、u162),它们的行为都相同。
Nashorn 为每个方法调用生成 invokedynamic 指令,属性 set/get 来自 JS。 LambdaForms 由 JDK 生成以处理那些 invokedynamic 指令。您提到那些 类 已卸载。除非您发现严重的性能问题,否则您无需担心。