细小知识点

一、static关键字

1、 方便在没有创建对象的情况下来进行调用
2、静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
3、用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次,所以可以用来优化程序性能。
 

二、逃逸分析

  • 1、jdk1.6后默认开启
  • 2、一个对象定义后,被外部方法引用称为方法逃逸;被外部线程访问称为线程逃逸
  • 3、示例
    public class EscapeTest {
        public static Object obj;
        public void globalVariableEscape() {  // 给全局变量赋值,发生逃逸
            obj = new Object();
        }
        public Object methodEscape() {  // 方法返回值,发生逃逸
            return new Object();
        }
        public void instanceEscape() {  // 实例引用发生逃逸
            test(this);
        }
    }
    
 
  • 4、效果:栈上分配,同步消除,标量替换
  • 5、详细讲解
  
 

转载于:https://www.cnblogs.com/Genesisx/p/9361308.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值