jvm

lnlining 方法内联

 

int addAll(int max) {
    int accum = 0;
    for(int i=0;i<max;i++)
        accum = add(accum,i);
    return accum;
}
int add(int a,int b){
    return a+b;
}
int addAll(int max) {
    int accum = 0;
    for(int i=0;i<max;i++)
        accum = accum+i;
    return accum;
}

Loop unrolling

    private static final String[] options = {"A","B","C"};
    void lopper(){
        for(String option : options){
            process(option);
        }
    }

    void process(String option) {
        System.out.println(option);
    }
    private static final String[] options = {"A","B","C"};
    void lopper(){
        System.out.println(options[0]);
        System.out.println(options[1]);
        System.out.println(options[2]);
    }

https://en.wikipedia.org/wiki/Loop_unrollin g

lock coarsening 锁粗化

public void needsLocks(){
    for(String option:options){
        process(option);
    }
}
synchronized void process(String option) {
    // code
}

 

public void needsLocks(){
    synchronized (this) {
        for (String option : options) {
            // code
        }
    }
}

将多个连续的加锁减锁,合并为一个

Lock Eliding 锁消除

public void overCautious(){
    List I = new ArrayList();
    synchronized (I) {
        for (String option : options) {
            // code
        }
    }
}

it never escapes this thread...删除不必要的加锁操作

public void overCautious(){
    List I = new ArrayList();
        for (String option : options) {
            // code
        }
}

Escape Analysis 逃逸分析

@AllArgsConstructor
class Foo{
    public final String a;
    public final String b;
}

public void bar(){
    Foo f = new Foo("hello","jvm");
    baz(f);
}
public void baz(Foo f){
    System.out.println(f.a);
    System.out.println(",");
    quux(f);
}
public void quux(Foo f){
    System.out.println(f.b);
    System.out.println("!");
}

 https://blog.youkuaiyun.com/qq_33915826/article/details/79950890

public void inlined(){
    System.out.println("hello");
    System.out.println(",");
    System.out.println("jvm");
    System.out.println("!");
}

JIT

c2 Compiler

 Profile to find 'hot spots';

 10k calls;

 

转载于:https://my.oschina.net/haloooooo/blog/2208583

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值