由StringBuffer和StringBuilder感受JVM运行时编译优化(just in time)
很多人习惯把线程安全的StringBuffer用做局部变量,依赖于JIT,不比StringBuilder慢。StringBuffer虽然加了synchronized,做局部变量时,锁住的只是线程局部变量,没有锁竞争类似于synchronized(newObject()),是没有意义的。JVM运行一会就发现这个无意义的锁,可以被清除掉,就做“锁省略”优化.再执行,无锁的StringBuffer性能就