【问题标题】:Does Java 8 have tail call optimization?Java 8 有尾调用优化吗?
【发布时间】:2014-05-16 23:38:32
【问题描述】:

我尝试在网上挖掘以回答我的问题。我找到了一些与Project DaVinci 相关的文档。这被标记为与在 JVM 中包含闭包相关的 JSR 292。这个项目实现了吗?它是 Java 8 的一部分吗?

【问题讨论】:

    标签: java java-8 tail-call-optimization


    【解决方案1】:

    据我所知,Java 8 没有尾调用优化。 Afaik 它与实际的编译器技巧无关,因为那很简单,但出于安全目的保留调用堆栈。但我想用字节码重写器是可能的。

    【讨论】:

    • 安全问题是 Java 通过展开当前堆栈跟踪来跟踪其安全上下文。对于重写调用堆栈并可能允许被调用者逃避其安全上下文的优化,您必须非常小心。
    【解决方案2】:

    Java 在编译器级别不支持 TCO,但可以使用 lambda 表达式在 Java 8 中实现它。 Venkat Subramaniamin 在“Java 中的函数式编程”中对其进行了描述。

    【讨论】:

    • 谢谢会检查一下
    • 刚刚检查过了。太棒了。
    • 请引用书中的相关摘录。
    • @toniedzwiedz blog.agiledeveloper.com/2013/01/… .这是 Venkat 创建的博客,讨论了这个
    猜你喜欢
    • 2019-04-20
    • 2010-09-11
    • 2021-05-30
    • 2011-03-31
    • 2014-04-06
    • 1970-01-01
    • 2012-10-14
    • 2011-07-11
    相关资源
    最近更新 更多