JVM JIT编译器逃逸分析阶段性优化Debug日志:-XX:+PrintEscapeAnalysis

JVM JIT 编译器逃逸分析阶段性优化 Debug 日志详解

大家好,今天我们来深入探讨 JVM JIT 编译器中的逃逸分析及其优化,并结合 -XX:+PrintEscapeAnalysis 产生的 Debug 日志进行分析。逃逸分析是 JVM 性能优化的重要手段之一,理解其原理和工作方式对于编写高性能的 Java 代码至关重要。

1. 什么是逃逸分析?

逃逸分析 (Escape Analysis) 是一种静态程序分析技术,它在编译期间分析对象的生命周期,判断对象是否逃逸出方法或线程。简而言之,逃逸分析的目标是确定对象的作用域,从而为后续的优化提供基础。

  • 方法逃逸 (Method Escape): 当一个对象在方法内部创建,并被方法外部的代码访问时,我们称这个对象发生了方法逃逸。例如,将对象作为方法的返回值,或者将对象赋值给类的成员变量。
  • 线程逃逸 (Thread Escape): 当一个对象可能被多个线程访问时,我们称这个对象发生了线程逃逸。这通常发生在将对象传递给线程,或者将对象存储在多个线程可以访问的共享变量中。

如果一个对象没有发生逃逸,即它仅存在于方法内部,且不会被其他线程访问,那么 JVM 就可以对这个对象进行一系列优化,例如:

  • 栈上分配 (Stack Allocation): 将对象直接分配在栈上,而不是堆上。栈上分配的对象随着方法的结束而自动销毁,无需垃圾回收器的介入,大大提高了性能。
  • 标量替换 (Scalar Replacement): 将对象的成员变量分解为独立的变量,并在栈上分配。这样可以减少对象的创建和访问开销。
  • 同步消除 (Synchronization Elimination): 如果一个对象只被单个线程访问,那么可以消除对该对象的同步操作,避免不必要的锁竞争。

2. 逃逸分析的原理

逃逸分析是一个复杂的编译优化过程,涉及多种算法和数据结构。其基本流程如下:

  1. 构建调用图 (Call Graph): 分析程序中的方法调用关系,构建一个调用图。调用图描述了方法之间的调用链。
  2. 构建对象生命周期图 (Object Lifetime Graph): 分析对象的创建、使用和销毁,构建一个对象生命周期图。对象生命周期图描述了对象在程序中的生命周期轨迹。
  3. 逃逸分析算法: 基于调用图和对象生命周期图,使用逃逸分析算法判断对象是否逃逸。常见的逃逸分析算法包括基于指针分析的算法和基于类型推断的算法。

3. 使用 -XX:+PrintEscapeAnalysis 开启逃逸分析 Debug 日志

-XX:+PrintEscapeAnalysis 选项可以开启逃逸分析的 Debug 日志,帮助我们了解逃逸分析的结果。这个选项会打印出 JIT 编译器在进行逃逸分析时的一些信息,包括:

  • 对象的创建位置: 显示对象在代码中的创建位置。
  • 对象的逃逸状态: 指示对象是否逃逸,以及逃逸的类型(方法逃逸或线程逃逸)。
  • 优化决策: 显示 JIT 编译器基于逃逸分析结果所做的优化决策,例如是否进行栈上分配、标量替换或同步消除。

4. Debug 日志解读与案例分析

我们通过一些代码示例和对应的 Debug 日志来详细解读逃逸分析的过程和结果。

案例 1: 没有逃逸的对象

public class EscapeAnalysisExample {

    public static void main(String[] args) {
        for (int i = 0; i < 1000; i++) {
            allocatePoint();
        }
    }

    static void allocatePoint() {
        Point p = new Point(10, 20);
        System.out.println("X: " + p.getX() + ", Y: " + p.getY());
    }

    static class Point {
        private int x;
        private int y;

        public Point(int x, int y) {
            this.x = x;
            this.y = y;
        }

        public int getX() {
            return x;
        }

        public int getY() {
            return y;
        }
    }
}

在这个例子中,Point 对象在 allocatePoint 方法内部创建,并且只在方法内部使用,没有被传递到方法外部或共享给其他线程。因此,Point 对象没有发生逃逸。

运行程序时,加上 JVM 参数 -XX:+PrintEscapeAnalysis -XX:+PrintCompilation -XX:CompileCommand=compileonly,EscapeAnalysisExample::allocatePoint-XX:+PrintCompilation 会打印 JIT 编译的信息,CompileCommand 限制只编译 allocatePoint 方法,方便我们分析。

Debug 日志 (片段):


     6  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
     7  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
     8  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
     9  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    10  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    11  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    12  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    13  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    14  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    15  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    16  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    17  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    18  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    19  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    20  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    21  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    22  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    23  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    24  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    25  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    26  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    27  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    28  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    29  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    30  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    31  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    32  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    33  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    34  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    35  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    36  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    37  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    38  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    39  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    40  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    41  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    42  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    43  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    44  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    45  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    46  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    47  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    48  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    49  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    50  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    51  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    52  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    53  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    54  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    55  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    56  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    57  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    58  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    59  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    60  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    61  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    62  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    63  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    64  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    65  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    66  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    67  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    68  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    69  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    70  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    71  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    72  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    73  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    74  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    75  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    76  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    77  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    78  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    79  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    80  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    81  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    82  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    83  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    84  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    85  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    86  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    87  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    88  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    89  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    90  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    91  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    92  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    93  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    94  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    95  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    96  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    97  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    98  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
    99  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   100  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   101  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   102  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   103  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   104  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   105  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   106  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   107  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   108  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   109  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   110  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   111  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   112  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   113  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   114  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   115  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   116  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   117  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   118  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   119  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   120  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   121  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   122  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   123  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   124  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   125  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   126  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   127  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   128  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   129  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   130  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   131  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   132  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   133  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   134  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   135  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   136  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   137  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   138  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   139  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   140  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   141  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   142  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   143  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   144  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   145  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   146  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   147  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   148  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   149  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   150  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   151  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   152  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   153  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   154  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   155  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   156  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   157  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   158  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   159  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   160  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   161  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   162  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   163  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   164  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   165  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   166  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   167  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   168  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   169  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   170  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   171  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   172  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   173  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   174  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   175  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   176  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   177  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   178  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   179  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   180  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   181  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   182  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   183  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   184  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   185  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   186  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   187  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   188  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   189  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   190  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   191  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   192  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   193  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   194  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   195  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   196  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   197  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   198  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   199  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   200  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   201  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   202  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   203  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   204  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   205  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   206  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   207  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   208  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   209  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   210  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   211  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   212  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   213  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   214  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   215  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   216  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   217  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   218  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   219  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   220  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   221  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   222  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   223  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   224  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   225  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   226  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   227  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   228  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   229  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   230  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   231  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   232  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   233  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   234  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   235  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   236  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   237  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   238  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   239  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   240  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   241  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   242  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   243  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   244  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   245  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   246  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   247  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   248  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   249  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   250  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   251  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   252  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   253  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   254  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   255  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   256  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   257  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   258  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   259  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   260  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   261  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   262  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   263  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   264  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   265  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   266  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   267  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   268  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   269  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   270  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   271  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   272  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   273  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   274  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   275  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   276  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   277  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   278  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   279  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   280  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   281  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   282  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   283  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   284  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   285  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   286  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   287  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   288  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   289  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   290  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   291  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   292  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   293  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   294  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   295  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   296  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   297  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   298  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   299  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   300  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   301  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   302  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   303  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   304  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   305  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   306  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   307  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   308  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   309  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   310  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   311  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   312  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   313  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   314  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   315  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   316  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   317  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   318  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   319  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   320  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   321  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   322  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   323  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   324  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   325  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   326  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   327  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   328  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   329  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   330  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   331  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   332  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   333  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   334  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   335  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   336  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   337  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   338  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   339  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   340  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   341  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   342  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   343  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   344  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   345  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   346  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   347  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   348  EscapeAnalysisExample::allocatePoint (33 bytes)   made not entrant
   349  EscapeAnalysisExample

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注