尾调用优化 java_为什么JVM仍然不支持尾调用优化?
拉丁的傳說
也許您已經(jīng)知道這一點(diǎn),但是這個(gè)功能并不像聽起來(lái)那么簡(jiǎn)單,因?yàn)镴ava語(yǔ)言實(shí)際上將堆棧跟蹤暴露給程序員。考慮以下程序:public?class?Test?{
????public?static?String?f()?{
????????String?s?=?Math.random()?>?.5???f()?:?g();
????????return?s;
????}
????public?static?String?g()?{
????????if?(Math.random()?>?.9)?{
????????????StackTraceElement[]?ste?=?new?Throwable().getStackTrace();
????????????return?ste[ste.length?/?2].getMethodName();
????????}
????????return?f();
????}
????public?static?void?main(String[]?args)?{
????????System.out.println(f());
????}}即使這有“尾調(diào)”,也可能無(wú)法優(yōu)化。(如果它被優(yōu)化,它仍然需要整個(gè)調(diào)用堆棧的簿記,因?yàn)槌绦虻恼Z(yǔ)義依賴于它。)基本上,這意味著在向后兼容的同時(shí)很難支持它。
總結(jié)
以上是生活随笔為你收集整理的尾调用优化 java_为什么JVM仍然不支持尾调用优化?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 争时金融java_Java高并发编程基础
- 下一篇: java爬虫工具xpath提取,2020