JVM的栈上分配与逃逸分析
2019-05-30 22:02
260 查看
版权声明:免责随便用 https://blog.csdn.net/qq_40699535/article/details/90667482
什么是栈上分配?
栈上分配主要是指在Java程序的执行过程中,在方法体中声明的变量以及创建的对象,将直接从该线程所使用的栈中分配空间。 一般而言,创建对象都是从堆中来分配的,这里是指在栈上来分配空间给新创建的对象。
什么是逃逸?
逃逸是指在某个方法之内创建的对象,除了在方法体之内被引用之外,还在方法体之外被其它变量引用到;这样带来的后果是在该方法执行完毕之后,该方法中创建的对象将无法被GC回收,由于其被其它变量引用。正常的方法调用中,方法体中创建的对象将在执行完毕之后,将回收其中创建的对象;故由于无法回收,即成为逃逸。
逃逸的场景:
方法返回值,发生逃逸
为成员属性赋值,发生逃逸
对象作用域仅在当前方法中,没有发生逃逸
引用成员变量的值,发生逃逸
关于递归的问题,目前我也不知道准确答案…(以下是网上回答)
第一种情况,如果递归方法的参数有对象,那就发生了逃逸。理由:逃逸是对象的作用范围超出了该方法,被其他外部方法访问了。虽然递归,是自己调用自己,但在内存结构上看,栈帧是不同一个的,实际二者也是不同方法。
第二种情况,如果方法没引用类型参数,那就不逃逸。
相关文章推荐
- Java_JVM_逃逸分析技术_栈上分配_标量替换
- Jvm(1),逃逸分析和栈上分配
- JVM的栈上分配与逃逸分析(Escape Analysis)
- JVM内存分配分析之一
- 深入分析JVM逃逸分析对性能的影响
- Java中的逃逸分析和TLAB以及Java对象分配
- (九)栈上分配与逃逸分析
- JVM笔记-逃逸分析
- 栈上分配与逃逸分析
- JVM的逃逸分析
- 【jvm学习】jvm运行时内存分配模型分析
- JVM优化之逃逸分析
- 【JVM学习】Java的家园----JVM内存区域分析与对象的内存分配和访问
- 逃逸分析与栈上分配
- JVM优化手段 - 逃逸分析
- Java中的逃逸分析和TLAB以及Java对象分配
- JVM中的逃逸分析
- 内存分配--栈上分配(逃逸分析)
- JVM优化之逃逸分析(Escape Analysis)
- JVM调优:并发GC和逃逸分析