Java后端
·2025-06-03Java 中创建的对象内存是否都会分配到堆中?
并非,对于 JIT 的逃逸优化,也就是如果当前方法中创建的对象只是供当前方法内部使用,满足下面4个要求:
1. 当前对象没有作为参数传递给其他方法
2. 没有赋值给类对象或者静态字段
3. 没有作为返回值
4. 没有被其他线程访问到
这个时候判断创建的实例无法逃逸出当前方法,就会启动逃逸优化,即当前对象的内存不会分配在堆中,而是分配在栈中,把对象拆成一个个字段,保存在局部变量表中,这样方法执行完栈帧自动弹出,对象无需通过gc回收,直接释放内存
如果是嵌套对象,只要对象的引用链上没有对象逃逸,都可以优化成字段分配在栈空间上
3
0
分享
操作
评论
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
