栈上分配和方法逃逸

栈上分配和逃逸分析

栈上分配指的是根据方法的运行过程,建立java的虚拟机栈,这个方法栈帧根据方法的运行顺序入栈和出栈,在栈帧在栈的过程中,可以在栈上分配内存空间

逃逸分析,主要是用于分析对象的作用域,例如一个对象在方法内部,外部没有它的引用,说明没有发生逃逸,反之发生逃逸

案例:

public class Demo {

public Demo demo;

/**

 *  1.为成员变量赋值,在外部引用方法内部的对象,发生了逃逸

 */

public Demo getDemo() {

demo = new Demo();

return demo;

}

/**

 * 2.内部对象的引用和外部对象关联发生了逃逸

 */

public void setDemo(){

Demo demo = getDemo();

}

/**

 * 2.方法内部的对象只和内部引用有关系没有发生逃逸

 */

public void sayHello(){

Demo demo = new Demo();

}

}

你可能感兴趣的:(栈上分配和方法逃逸)