技术开发 频道

分享Java语言中内存管理的几个小技巧

   【【IT168 技术文档】
    Java做的系统给人的印象是什么?占内存!说道这句话就会有N多人站出来为java辩护,并举出一堆的性能测试报告来证明这一点。 

 其实从理论上来讲java做的系统并不比其他语言开发出来的系统更占用内存,那么为什么却有这么N多理由来证明它确实占内存呢?两个字,陋习。 

   (1)别用new Boolean()。 

 在很多场景中Boolean类型是必须的,比如JDBC中boolean类型的set与get都是通过Boolean封装传递的,大部分ORM也是用Boolean来封装boolean类型的,比如: 
ps.setBoolean("isClosed",new Boolean(true)); 

  ps.setBoolean("isClosed",new Boolean(isClosed)); 

  ps.setBoolean("isClosed",new Boolean(i==3)); 

    通常这些系统中构造的Boolean实例的个数是相当多的,所以系统中充满了大量Boolean实例小对象,这是相当消耗内存的。Boolean类实际上只要两个实例就够了,一个true的实例,一个false的实例。 
Boolean类提供两了个静态变量: 

public static final Boolean TRUE = new Boolean(true); 

  public static final Boolean FALSE = new Boolean(false); 
    需要的时候只要取这两个变量就可以了, 

 比如: 
ps.setBoolean("isClosed",Boolean.TRUE); 
    那么象2、3句那样要根据一个boolean变量来创建一个Boolean怎么办呢?可以使用Boolean提供的静态方法: Boolean.valueOf() 

    比如: 
ps.setBoolean("isClosed",Boolean.valueOf(isClosed)); 

  ps.setBoolean("isClosed",Boolean.valueOf(i==3)); 

0
相关文章