zoukankan      html  css  js  c++  java
  • 关于反射会导致计算机的性能下降的讨论

      在操作Java框架时,通过会用到反射技术,但是反射技术有一个缺点:会导致计算机的性能下降,因为反射占用了计算机的缓存。比如通过反射技术创建某一类的实例时,会先得到该类的构造函数,如果缓存中没有该构造函数,JVM就会从字节码文件中寻找该构造函数,然后再创建实例对象。(可以参看Class类的中newInstance部分的源代码)

         Class类中的newInstance(),就是直接通过缓存中的无参构造函数创建实例对象的。相对于Class.getConstructor.newInstance(arg...)要便捷一些,但仅限于无参构造函数。

    网上有这种说法,我觉得是不准确的,期待各位的指正: 

    反射会导致计算机性能下降

    eg:两种方式建立对象的区别

     1,String str = new String ("abc")  

     2,Constructor con = Class.forName("java.lang.String").getConstructor(String.class)   

          String str2 = (String)con.newInstance("abc")  

    第一种方法:class--------------------------->new Object

     第二中方法:class----->Constructor---->new Object

    显然第一中方法速度快,内部代码用到了缓存机制保存了默认的构造方法,而第二种方法要去加载string字节码文件让后找到选的的构造方法区new对象效率性能下降。

      我觉得导致计算机性能下降是因为jvm为了方便下一次创建实例对象,将构造函数缓存起来了,占用了计算机的缓存空间。另外,第一种方法在new对象时,也要加载类的字节码,上面这种说法只能说明反射会导致本程序的执行效率下降(time)。(计算机性能的下降主要是对计算机上其它程序运行的影响)

  • 相关阅读:
    Ganglia与Centreon整合构建智能化监控报警平台
    通过Centreon监控apache、MySQL、Hadoop服务状态
    分布式监控告警平台Centreon快速使用
    分布式监控数据采集系统Ganglia实战
    Zabbix与ELK整合实现对日志数据的实时监控
    Zabbix通过与微信、钉钉整合实现实时告警
    详解容器设计模式
    深入理解 Pod
    docker exec实现原理
    使用Docker部署应用以及容器数据卷Volume
  • 原文地址:https://www.cnblogs.com/pengineer/p/3721816.html
Copyright © 2011-2022 走看看