标量替换、栈上分配、同步消除

5 篇文章 0 订阅

逃逸分析

含义

逃逸分析是目前Java虚拟机中比较前沿的优化技术,它并不是直接优化代码的手段,而是为其他优化措施(标量替换、栈上分配、同步消除)提供依据的分析技术。

基本原理

分析对象的作用域,是否会被外部方法或者其他线程引用。

标量替换

含义

标量是指不可再分的原始数据类型(int、long等数值类型及reference类型等)。如同数据库中所说的数据的原子性。
聚和量是指可以再分的数据(对象)。

基本原理

当经过逃逸分析后,发现某个对象不会在方法之外使用,且能够拆成多个标量,那么程序执行时,不会创建该对象,而是创建多个需要的成员变量。

栈上分配

含义

如果一个对象没有发生逃逸,那这个对象会被标量替换,这个对象的成员信息会被分配到线程栈,而不会在堆上分配,这样对象会随着栈帧的销毁而销毁,从而减少GC的压力,节约空间,提升性能。

同步消除

含义

线程同步本身是一个相对耗时的过程,如果逃逸分析能够确定一个变量不会逃逸出线程,无法被其他线程访问,那么这个变量的读写肯定就不会有竞争,对这个变量实施的同步措施也就可以安全地消除掉(去掉synchronized)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值