看ThreadLocal时,看到 http://www.javaeye.com/topic/179040?page=2#510062 因此,又转到 “Java内存对象的逃逸分析”
http://blog.sina.com.cn/s/blog_4b6047bc01000avq.html
下面是我看此文章时的笔记,有可能有立即错误的地方,请仔细斟酌,以防被我误导
逃逸分析(Escape Analysis)是分析 指针动态范围 的方法,这同 指针分析 和 外形分析 相关联
原作者这么说:
当变量(或者对象)在方法中分配后,其指针被返回或者被全局引用(这样就会被其他过程或者线程所引用),这种现象称作指针(或者引用)的逃逸(Escape)。
其中b_method方法内部生成的V对象的引用被返回给a_method方法内的变量v,c_method方法内生成的V对象被赋给了全局变量global_v。这两种场景都发生了指针(引用)逃逸。
但是,我的理解是这样的:
只要这个引用有可能会被多个线程所引用,这就发生了逃逸。像下面的代码,没有返回引用,也没有赋值给 static 的变量,我的理解,这里依然发生了逃逸
原作者的例子中,b_method并没有逃逸,因为,最终,在a_method中,b_method返回的引用还是没有可能被多个线程所引用