/** * @author binghe * @description 对象逃逸示例1 */public class ObjectEscape{ private User user; public void init(){ user = new User(); }}在ObjectEscape类中,存在一个成员变量user,我们在init()方法中,创建了一个User类的对象,并将其赋值给成员变量user。此时,对象被复制给了成员变量,可能被外部使用,此时的变量就发生了逃逸。
/** * @author binghe * @description 对象逃逸示例2 */public class ObjectReturn{ public User createUser(){ User user = new User(); return user; }}给出两个示例,相信小伙伴们对JVM的逃逸分析多少有点了解了吧,没错,JVM通过逃逸分析,能够分析出新对象的使用范围,从而决定新对象是否要在堆上进行分配。