在循环外边NEW Veracther,然后在循环里头给它付值然后在循环里头add到list里不行吗?

解决方案 »

  1.   

    java完善的内存处理机制,很少出现象你这种的内存溢出问题,你检测一下是不是自己程序设计上的问题
      

  2.   

                for (int i = 0; i < getList.size(); i++) {
                    DeclareCollectionInfo dcInfo = (DeclareCollectionInfo) getList.get(i);
                    VoucherDetailDTO v = new VoucherDetailDTO() ;//就是这个对象在不停的NEW,造成内存溢出。                voucherDetailDto[i].setCollectionUnit(dcInfo.getCollectionUnit());
                    voucherDetailDto[i].setPickupSign("1");
                    voucherDetailDto[i].setTaxpayerId(dcInfo.getTaxpayerId());
                    voucherDetailDto[i].setTaxOrganCode(dcInfo.getTaxOrganCode());
                    voucherDList.add(voucherDetailDto[i]);
    }大家有什么好的办法来解决
      

  3.   

    问题是你现在的getList.size有多大,你每个VoucherDetailDTO对象是不是很大?
      

  4.   

    上面写的不对,我改了一下  
        for  (int  i  =  0;  i    <  getList.size();  i++)  {  
                                   DeclareCollectionInfo  dcInfo  =  (DeclareCollectionInfo)  getList.get(i);  
                                   VoucherDetailDTO  v  =  new  VoucherDetailDTO()  ;//就是这个对象在不停的NEW,造成内存溢出。  
     
                                  v .setCollectionUnit(dcInfo.getCollectionUnit());  
                                   v .setPickupSign(  "1  ");  
                                   v .setTaxpayerId(dcInfo.getTaxpayerId());  
                                   v .setTaxOrganCode(dcInfo.getTaxOrganCode());  
                                   voucherDList.add(voucherDetailDto[i]);  
    }  
     
    大家有什么好的办法来解决  由于数据量比较大,大约在5万以上,WEBLOIGC的配置内存为256M以128M的增加,机器的总共内存为1G。
      

  5.   

    上面写的不对,我改了一下  
        for  (int  i  =  0;  i    <  getList.size();  i++)  {  
                                   DeclareCollectionInfo  dcInfo  =  (DeclareCollectionInfo)  getList.get(i);  
                                   VoucherDetailDTO  v  =  new  VoucherDetailDTO()  ;//就是这个对象在不停的NEW,造成内存溢出。  
     
                                  v .setCollectionUnit(dcInfo.getCollectionUnit());  
                                   v .setPickupSign(  "1  ");  
                                   v .setTaxpayerId(dcInfo.getTaxpayerId());  
                                   v .setTaxOrganCode(dcInfo.getTaxOrganCode());  
                                   voucherDList.add(voucherDetailDto[i]);  
    }  
     
    大家有什么好的办法来解决  由于数据量比较大,大约在5万以上,WEBLOIGC的配置内存为256M以128M的增加,机器的总共内存为1G。
      

  6.   

    回复人: czcui1979(WAS害人) ( ) 信誉:100  2004-11-05 10:25:00  得分: 0  
     
     
       在循环外边NEW Veracther,然后在循环里头给它付值然后在循环里头add到list里不行吗?
      
    ------------------------------------------------------------------------
    这种做法是错误的,在for循环外面new只会产生一个实例。
      

  7.   

    如果你的new的对象过多的话,可能需要引入swap机制才行了。
      

  8.   

    可以考虑利用apache 的jcs来实现,对于这种大数据量的处理,应该具有和外存交换的能力。
      

  9.   

    克隆
    http://blog.csdn.net/rosen/archive/2004/10/29/159196.aspx