cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Gentry <mgen...@masslight.net>
Subject Re: ObjectStore OutOfMemory Exception
Date Thu, 19 Nov 2009 14:45:04 GMT
Do you need your objects to live in "context" for an extended period?
Could you do this instead?

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

That will allow the context to be garbage collected (if that will work
with your code).

mrg


On Thu, Nov 19, 2009 at 9:33 AM, Mattex83 <matteo.parodi@abodata.com> wrote:
>
> 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.
>

Mime
View raw message