我们知道对象一般在堆上生成的,但这也不是绝对的,JVM分析代码后,发现一个对象在声明之后只在当前函数范围内使用,就会将这个对象在栈上申请空间,这就是JDK1.6中提出的逃逸分析。

逃逸分析是JVM分析了对象只在当前函数范围内使用,因而改为在栈上申请空间。而栈是函数运行完立即清理的,所以不需要等到gc了,大大缓解了gc的压力。

当然,如果不是只在当前函数范围内用到的对象不行。