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

  • 相关阅读:
    一、cocos2d-x 3.0 final使用httpclient编译到android,须要用到的android.mk
    lvchange的available參数
    基于谱减法的声音去噪
    ios使用openUrl进行应用跳转
    linux下ssh免密登陆
    字体图标 icon font
    hdu 3642 Get The Treasury(扫描线)
    3D游戏引擎一 win32编程
    Codeforces 112B-Petya and Square(实现)
    动态规划 is beginning。。。。。。。。。
  • 原文地址:https://www.cnblogs.com/pengineer/p/3721816.html
Copyright © 2011-2022 走看看