首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

java中new Integer()跟Integer.valueOf()效率比较

2012-09-01 
java中new Integer()和Integer.valueOf()效率比较最近在公司参与一个项目,项目挺大,耗时一年左右,具体业务

java中new Integer()和Integer.valueOf()效率比较

最近在公司参与一个项目,项目挺大,耗时一年左右,具体业务就不说了。。。java中new Integer()跟Integer.valueOf()效率比较
之后在项目开发将近结束时,公司用Coverity工具对整体代码进行了检视,结果发现了N多问题,好多都是自己不注意的细节,在感叹此工具的强大的同时,问了下项目经理这个工具的价格,告知,30万$ !!! 纳尼java中new Integer()跟Integer.valueOf()效率比较 神马!尼玛java中new Integer()跟Integer.valueOf()效率比较 代码检视这块儿和findbug也差不多啊, 这也忒狠了点吧。。。java中new Integer()跟Integer.valueOf()效率比较

不扯淡了,步入正题。
在检视过程中,提到如下一个问题,就是在我们代码中用new Integer(a) 的地方,好多都提示说Ineffective way, use Integer.valueOf(int) intead. 一时感觉好奇,翻开源码查看,没有查出啥究竟,然后后来利用debug模式进入源码调试才发现,原来里面的实现也大有天地。。。
首先查看valueof(int) 方法的实现:

java中new Integer()跟Integer.valueOf()效率比较java中new Integer()跟Integer.valueOf()效率比较

    为什么呢?继续深入探究,进入IntegerCache类,这个是Integer类的一个内部私有类。

    java中new Integer()跟Integer.valueOf()效率比较java中new Integer()跟Integer.valueOf()效率比较
      java中new Integer()跟Integer.valueOf()效率比较java中new Integer()跟Integer.valueOf()效率比较
        java中new Integer()跟Integer.valueOf()效率比较java中new Integer()跟Integer.valueOf()效率比较

          然后将这两种方式单独封装到两个方法中,利用两个程序进行调试,然后再看下javaw.exe所占的内存,区别就出来了。。。大家可以自己试一下,为了查看内存,可以将程序sleep 20s来查看, 我本机的测试结果:
          new Integer方式:13 516K
          Integer.valueOf方式:8 852K.
          相差4664K.

          实验基本到此结束,但是学习却只是一个开始,在实际项目中也可以参考此种实现方式,懒加载和缓存的思想。java中new Integer()跟Integer.valueOf()效率比较

          ?

          转自:http://feikiss.iteye.com/blog/1285283

热点排行