volalite到底是防止什么重排序

117 阅读1分钟

new  //内存分配空间并将对象地址压栈
dup  //Duplicate the top operand stack value
INVOKESPECIAL  init //消耗栈顶一个对象地址,运行构造函数
PUTSTATIC //消耗一个栈顶对象地址,为static对象赋值

所以重排的是PUTSTATIC和INVOKESPECIAL,可能是先赋值,再构造,就出错了