记一次因为java虚拟机编译阶段对常量的优化导致常量修改后使用增量更新发布现网代码不生效的排查过程

  • Post author:
  • Post category:java


4N7JM-CV98F-WY9XX-9D8CF-369TT

java虚拟机编译阶段会将java文件编译程字节码的class文件,编译过程,java虚拟机并不是会原原本本的将java源文件编程class文件,而是会做一些优化;常见有如下:

  • java文件中注释代码在编译阶段就会直接丢弃掉;
  • 比如会为每一个类生成一个无参的构造函数,
  • 如果使用了lombok的@data注解,会自动生成set/get方法等等优化;
  • 并发编程中用到的volatile的指令重排其实也是java虚拟机生成class文件的过程中重要的一部分;

而今天我遇到的另外一个问题是java虚拟对常量的优化;先看下java文件,如下图

java源文件



版权声明:本文为LLF_1241352445原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。