zoukankan      html  css  js  c++  java
  • 细小知识点

    一、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、详细讲解
      
     
  • 相关阅读:
    Python的运算符
    RabbitMQ 的配置文件
    安装新版本的rabbitmq
    Ubuntu 16.04 安装rabbitmq
    Python Web 版本tailf, grep
    解决pycharm问题:module 'pip' has no attribute 'main'
    Python argparse
    Ansible 并行和异步
    cef相关
    浏览器透明设置例子,qt5.6才支持
  • 原文地址:https://www.cnblogs.com/Genesisx/p/9361308.html
Copyright © 2011-2022 走看看