OutOFMemory Java heap exeception

From: emre.yilma..r.net
Date: Fri Dec 23 2005 - 04:25:37 EST

  • Next message: Oscar Maire-Richard: "Re: heap memory not released"

    Hi,

    I want to transfer database records from one db to another.
    Transfer size nearly 5000 data and this each data has nearly 1000 relational
    objects.
    ---->I firstly try the Paged query like :

    public static List getPersonels(){
    SelectQuery query = new SelectQuery(Personel.class);
    query.setPageSize(10);
    return context.performQuery(query);
    }
    this method run of the first nearly 900 count of personel class but personel
    object has 2000 rows.

    ------>Then I try the ResultIterator like :

    public SelectQuery getPersonels(){
    SelectQuery query = new SelectQuery(Personel.class);
    query.setFetchingDataRows(true);
    query.setPageSize(10);
    return query;
    }

    used below class
    public static void transferPersonels(){
    SelectQuery oldDbItems = tr.com.htr.hgys.olddb.Personel.getPersonels();
    ResultIterator it = null;
    try {
    it = tr.com.htr.hgys.olddb.Personel.context.performIteratedQuery(oldDbItems);
    while(it.hasNextRow()) {
    Map row = it.nextDataRow();
    tr.com.htr.hgys.olddb.Personel oldDbItem = (tr.com.htr.hgys.olddb.Personel)
    tr.com.htr.hgys.olddb.Personel.context.objectFromDataRow(
    tr.com.htr.hgys.olddb.Personel.class,(DataRow)row,true);
    tr.com.htr.hgys.newdb.CopyOfPersonel newDbItem = (tr.com.htr.hgys.newdb.
    CopyOfPersonel) context.createAndRegisterNewObject("Personel");
    try{
    PersonelIdentity newIdent = PersonelIdentity.transferPersonelIdentity
    (oldDbItem);
    Card card = Card.transferPersonelCard(oldDbItem);
    tr.com.htr.hgys.olddb.Daire daire = tr.com.htr.hgys.olddb.Daire.getDaire
    (oldDbItem.getDaireId());
    String deptName = null;
    if(daire != null)
    deptName = daire.getDaireName();
    Department dept = Department.getDepartment(deptName);
    tr.com.htr.hgys.olddb.Gorev görev = tr.com.htr.hgys.olddb.Gorev.getGorev
    (oldDbItem.getGorevId());
    String jobName = null;
    if(görev != null)
    jobName = görev.getGorevName();
    Job job = Job.getJob(jobName);
    tr.com.htr.hgys.olddb.Bolum bolum = tr.com.htr.hgys.olddb.Bolum.getBolum
    (oldDbItem.getBolumId());
    String sectionName = null;
    if(bolum != null)
    sectionName = bolum.getBolumName();
    Section section = Section.getSection(sectionName);
    tr.com.htr.hgys.olddb.Unvan unvan = tr.com.htr.hgys.olddb.Unvan.getUnvan
    (oldDbItem.getUnvanId());
    String titleName = null;
    if(unvan !=null)
    titleName = unvan.getUnvanName();
    Title title = Title.getTitle(titleName);
    tr.com.htr.hgys.olddb.Groups group = tr.com.htr.hgys.olddb.Groups.getGroups
    (oldDbItem.getGroupId());
    String groupName = null;
    if(group != null)
    groupName = group.getGroupName();
    Vehicle vehicle = Vehicle.getVehicle(oldDbItem);
    newDbItem.setAccessGroupName(groupName);
    newDbItem.setAddress(oldDbItem.getAdres());
    newDbItem.setAutoCardRel(null);
    newDbItem.setCardRel(card);
    newDbItem.setClassRel(null);
    newDbItem.setDeleted(new Boolean(false));
    newDbItem.setDepartmentRel(dept);
    newDbItem.setHomePhone(oldDbItem.getTelEv());
    newDbItem.setJobRel(job);
    newDbItem.setTaxNo(oldDbItem.getVergino());
    newDbItem.setPersonelIdentityRel(newIdent);
    newDbItem.setPersonelImageRel(null);
    newDbItem.setPersonList(null);
    newDbItem.setRecordDate(oldDbItem.getDateofrec());
    newDbItem.setRecordNo(oldDbItem.getSicilno());
    newDbItem.setRoomNumber(oldDbItem.getOda());
    newDbItem.setSectionRel(section);
    newDbItem.setTitleRel(title);
    newDbItem.setUnitRel(null);
    newDbItem.setVehicleRel(vehicle);
    newDbItem.setWirelessPhone(oldDbItem.getTelCep());
    newDbItem.setWorkPhone(oldDbItem.getTelDahili());
    context.commitChanges();

    }catch (Exception e){
    e.printStackTrace();
    }
    java.lang.System.gc();
    }
    }
    catch(CayenneException ex) {
    ex.printStackTrace();
    }
    finally {
    try {
    it.close();
    }catch(CayenneException closeEx) {
    closeEx.printStackTrace();
    }
    }
    context.commitChanges();
    }

    this time I get an error of cayenne for connection timeout.
    I guess this is caused by other querys in transferPersonels() metod.

    How can I solve the out of memory problem..

    Thanks for help...



    This archive was generated by hypermail 2.0.0 : Fri Dec 23 2005 - 04:25:23 EST