线程逃逸
上面的例子,直接将对象进行返回出去,该对象很有可能被外部线程所访问,如:赋值给变量等等 则称为 "线程逃逸
栈上分配
如果能够证明一个对象,不会进行逃逸到方法或线程外的话,则可以对该变量进行优化...,那么就可以直接让这个对象在栈空间分配内存,这样该对象会随着方法的执行完毕自动进行销毁
简单来说:比如说,我上一篇文章有写到,一个方法对应一个栈帧,而我的对象是在当前的栈帧中所管理的,并非逃逸到方法外,...所以创建的对象是在栈中,而非堆中,所以称为 "栈上分配"
同步消除
线程同步本身比较耗时,若确定了一个变量不会逃逸出线程,无法被其他线程访问到,那这个变量的读写就不会存在竞争,则可以消除对该对象的同步锁...这样就无需在对对象分配空间了,只在栈上为分解出的变量分配内存即可。...由于HotSpot虚拟机目前的实现方法导致栈上分配实现起来比较复杂,所以HotSpot虚拟机中暂时还没有这项优化。