偶然看到的反编译后代码和源码不一致想到的

今天修改了之前写的springboot starter中的源码,并deploy到maven私库后,另一个工程B更新了代码,在工程B中找到了class文件,打了断点准备调试,忽然发现idea反编译后的代码跟我写的源码有个明显的结构性差异:
下图是我写的代码,注意userName变量的定义位置。

9421628154012_.pic_hd.jpg

下图是反编译的代码,注意userName变量的作用域被提升了


9411628154000_.pic_hd.jpg

当时觉得很奇怪,后来忽然想到好像在哪里看到过编译优化,翻了一下周志明老师的经典著作 深入理解java虚拟机,果然找到了答案

9431628155948_.pic.jpg

这个应该就是编译优化中的全局代码调整做的事情了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容