• 关于反射会导致计算机的性能下降的讨论


      在操作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)。(计算机性能的下降主要是对计算机上其它程序运行的影响)

  • 相关阅读:
    多态
    多继承
    传宗接代——继承
    解决vue项目更新版本后浏览器的缓存问题
    escape()、encodeURI()、encodeURIComponent()三种编码方式的区别
    epoll使用总结
    探讨c/c++的指针
    基于linux的pthread_t封装一个Thread类
    unix高并发编程中遇到的问题和笔记
    面向对象分析与设计 实验七
  • 原文地址:https://www.cnblogs.com/pengineer/p/3721816.html
Copyright © 2020-2023  润新知