ObjectStore OutOfMemory Exception

From: Mattex83 (matteo.parod..bodata.com)
Date: Thu Nov 19 2009 - 09:33:40 EST

  • Next message: Michael Gentry: "Re: ObjectStore OutOfMemory Exception"

    Hi,

    I've a memory trouble using the last version of Cayenne ( v3.0b). I created
    a table to store data coming with a frequency of 10-20 record per second.
    After few hours my application run out of memory.

    Heap report says that there are about 15000 records (and 15000 ObjectId)
    referenced by my application.

    This app hasn't any hashmap or list of records (it just creates persistent
    objects) so I think that these records are stored in ObjectStore.

    On commit I print these info:

    log.info("Registered Count:
    "+context.getObjectStore().registeredObjectsCount());
    log.info("New Count: "+ context.newObjects().size());
    log.info("Delete Count: "+ context.deletedObjects().size());
    log.info("Modify Count: "+ context.modifiedObjects().size());
    log.info("Cache Size: "+context.getQueryCache().size());

    the first one raise on each commit other logs are 0.
    So I think that context keeps committed objects, but I understood that v3.0
    shouldn't do this...

    How can I avoid this? or How can I clear the context registered Objects?

    my add function is:

    public void AddPacket(Integer serviceType, Date startTime, Date
    arrivalTime){
                    
                    Packet p = (Packet) context.newObject(Packet.class);

                    p.setServiceType(serviceType);
                    p.setStartTime(startTime);
                    p.setArrivalTime(arrivalTime);

                    try{
                            context.commitChanges();
                    }
                    catch(ValidationException e){
                            log.warn("Validation failed. Packet discarded\n");
                            try{
                                    context.rollbackChanges();
                            }
                            catch(Exception e1){
                                    e1.printStackTrace();
                            }
                    }
                    catch(Exception e){
                            e.printStackTrace();
                            try{
                                    context.rollbackChanges();
                            }
                            catch(Exception e1){
                                    e1.printStackTrace();
                            }
                            
                    }
                    log.info("Registered Count:
    "+context.getObjectStore().registeredObjectsCount());
                    log.info("New Count: "+ context.newObjects().size());
                    log.info("Delete Count: "+ context.deletedObjects().size());
                    log.info("Modify Count: "+ context.modifiedObjects().size());
                    log.info("Cache Size: "+context.getQueryCache().size());
                    context.getObjectStore().getDataRowCache().clear();
                    context.getQueryCache().clear();
    }

    Thanks in advance

    Matteo

    -- 
    View this message in context: http://n3.nabble.com/ObjectStore-OutOfMemory-Exception-tp36832p36832.html
    Sent from the Cayenne - User mailing list archive at Nabble.com.
    



    This archive was generated by hypermail 2.0.0 : Thu Nov 19 2009 - 09:40:52 EST