静态编译下,方法重写使逃逸分析变得不可能
一篇 2021 年留下的逃逸分析查证记录,保留当时对运行时多态与编译期优化关系的理解。结论可能不完整,欢迎指正。
讨论逃逸分析时搜到维基百科,里面有一句话一直没想通。

先说结论
面向对象里有很多东西没法在静态编译时钉死,逃逸分析放在运行时做更合适。如果一定要在编译期做,大概就得放弃动态加载这一类特性。这是 2021 年的阅读笔记,当时并没有真正想通,下面只记录查过的材料和当时的理解。
查过的材料
编译原理和计算机组成原理的 PDF 翻过一遍,还是没对上这句话。后来从维基百科、极客时间、知乎查到几篇相关的。



当时的理解
面向对象有很多不能在静态编译时确定的地方,所以放在运行时优化更恰当。如果一定要在编译期优化,那就只能丢掉动态加载。
可能还需要更多铺垫。先记在这里。
参考
- RednaxelaFX,逃逸分析为何不能在编译期进行?
- C++ Programming/RTTI
- 极客时间,继承和多态:面向对象运行期的动态特性
- 极客时间,23 | 逃逸分析
- 2021 年原文:https://www.cnblogs.com/Jimmy-cnblog/p/15331761.html