java 标量替换_详解jvm中的标量替换

本文详细介绍了Java中的逃逸分析和标量替换技术。逃逸分析用于确定对象的作用域,如果对象未逃逸到方法或线程外部,则可能进行优化。标量替换是将对象拆解为基本变量,从而避免在堆中创建对象。通过测试对比,展示了标量替换如何减少GC次数和提升性能。文章最后提出,减少对象逃逸是优化的一个方向。
摘要由CSDN通过智能技术生成

概述

通常在java中创建一个对象,大家都认为是在堆中创建。 在jdk6开始有逃逸分析,标量替换等技术,关于在堆中创建对象不再绝对。

关于标量替换,通过以下几点进行概述:

逃逸分析

标量替换是什么

测试标量替换

逃逸分析

逃逸分析是一种分析技术,分析对象的动态作用域,供其他优化措施提供依据。比如分析一个对象不会逃逸到方法之外或线程之外,其它优化措施(栈上分配,标量替换等)根据逃逸程度进行优化。

逃逸分析示例

public class EscapeAnalysis {

public Person p;

/**

* 发生逃逸,对象被返回到方法作用域以外,被方法外部,线程外部都可以访问

*/

public void escape(){

p = new Person(26, "TomCoding escape");

}

/**

* 不会逃逸,对象在方法内部

*/

public String noEscape(){

Person person = new Person(26, "TomCoding noEscape");

return person.name;

}

}

static class Person {

public int age;

public String name;

... // 省略构造方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值