栈上分配和逃逸分析
栈上分配指的是根据方法的运行过程,建立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();
}
}