论坛首页 Java企业应用论坛

Java 性能优化

浏览 7373 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2008-02-27  
OO
1.Java 性能优化之创建对象
对于每个java程序员都知道怎样创建对象,但是你知道怎样创建才能提高应用的性能呢?
你知道创建对象的应用规则吗?
(1).要尽量避免在循环体中创建对象.
(2).尽量及时使对象符合垃圾回收标准.
(3).不要采用过深的继承层次.
(4).访问本地变量优于访问类中的变量.
例如:
Vector v=new Vector();
for(int i=0; i<100;i++){
Object obj=new Object();

}
这样的写法大家都不陌生吧。可是这样会浪费大量的内存空间。正确的方法如下。
Vector v=new Vector();
Object obj=null;
for(int i=0; i<100;i++){
obj=new Object();

}
这样内存中保存一个对象的引用,从而减少了浪费内存空间的情况。

还有:
不要对一个对象进行多次初始化。这样也会带来较大的内存开销,相抵系统性能。
public class Test(){
    private HashMap map=new HashMap();
    public Test(){
        map=new HashMap()
   }
}
以上的几点都好理解。可是有很多新手会出现上面的问题哦!!!!
   发表时间:2008-02-27  
第一个例子有区别吗?
0 请登录后投票
   发表时间:2008-02-27  
当然有区别了。第二种在内存中保存一个对象的引用,而第一种的编码方式会在内存中产出大量的对象。浪费大量的内存空间,还有也增加了系统做垃圾回收的负荷。仔细想想是不是这样。
0 请登录后投票
   发表时间:2008-02-27  
shikonglaike 写道
当然有区别了。第二种在内存中保存一个对象的引用,而第一种的编码方式会在内存中产出大量的对象。浪费大量的内存空间,还有也增加了系统做垃圾回收的负荷。仔细想想是不是这样。

我觉得,第二种方法在内存里面同样保留大量对象的匿名引用
0 请登录后投票
   发表时间:2008-02-27  
这两段代码都创建了100个一般对象和1个Vector,占用的内存为什么不一样呢?
所谓浪费大量的内存空间浪费在哪里了呢?
0 请登录后投票
   发表时间:2008-02-27  
mvmouse 写道
这两段代码都创建了100个一般对象和1个Vector,占用的内存为什么不一样呢?
所谓浪费大量的内存空间浪费在哪里了呢?


上一个有一百个引用.下一个有一个引用.
0 请登录后投票
   发表时间:2008-02-27  
大家说的很好!
你们的意思是这两个一样了?
0 请登录后投票
   发表时间:2008-02-27  
Object obj=null;
for(int i=0; i<100;i++){
  obj=new Object();

}

没必要,而且难看
0 请登录后投票
   发表时间:2008-02-27  
luanma 写道
Object obj=null;
for(int i=0; i<100;i++){
  obj=new Object();

}

没必要,而且难看


有必要的.狮子说的对呢.
一个引用要占4个字节的内存呢.
0 请登录后投票
   发表时间:2008-02-27  
有没有哪位能用测试数据说话?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics