【问题标题】:What are `$adapted$` methods I see in JMC/JFR?我在 JMC/JFR 中看到的 `$adapted$` 方法是什么?
【发布时间】:2019-09-11 13:47:36
【问题描述】:

当使用 Java Flight Recorder/Mission Control 对一些 scala 代码进行基准测试时,我可以看到一堆名称中包含 $adapted$ 的方法。看着签名,我可以想到一些可能性。

  • 这些是否与 java-8 函数 lambda 相同?即不会产生堆分配?
  • 它们是泛型的特化(在 scala 中,还是在 java 中的模板)?
  • 或者它们是某种其他类型的优化?

我在哪里可以阅读更多关于这方面的信息?

【问题讨论】:

  • 我认为这是某种固定装置。 Scala编译器通常滥用$,并且在创建say static object object Foo时可能会生成一些额外的方法、包等

标签: scala jvm jit jmc jfr


【解决方案1】:

我认为这是某种固定装置。 Scala 编译器通常在类名中滥用 $ 并且一些 java 代码可能会失败,它可能会在创建静态对象时生成一些额外的方法、包等

object Foo {
    case class Bar()
}

val bar = new Foo.Bar().getClass().getSimpleName() shouldEqual "Foo$Bar"

所以,它可能只是由编译器或其他一些类型级魔术宏库生成的

【讨论】:

    猜你喜欢
    • 2018-11-20
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多