逃逸分析的概念:
逃逸分析(Escape Analysis)指的是计算机语言、编译器语言优化管理中,分析指针动态范围的方法。简单的说,如果一个对象的指针被多个方法或线程引用时,我们可以说这个指针发生了逃逸。
在VM options中添加如下配置(关闭逃逸分析和栈上分配):
-Xmx10m -Xms10m -XX:+PrintGC -XX:-DoEscapeAnalysis -XX:-EliminateAllocations
```java
@Data
public class TestEscape {
private String name;
private int age;
private String gender;
//逃逸分析(JVM默认开启逃逸分析)
//循环一亿次
public static void cycle() {
for (int i = 0; i < 100000000; i++) {
TestEscape escape = new TestEscape();
escape.setName("冯宝宝");
escape.setAge(18);
escape.setGender("女");
}
}
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
cycle();
System.out.println("程序花费的时间是:" + (System.currentTimeMillis() - startTime));
}
}
输出结果:
在VM options中添加如下配置(开启逃逸分析和栈上分配):
-Xmx10m -Xms10m -XX:+PrintGC -XX:+DoEscapeAnalysis -XX:+EliminateAllocations