cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mattex83 <matteo.par...@abodata.com>
Subject ObjectStore OutOfMemory Exception
Date Thu, 19 Nov 2009 14:33:40 GMT

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