[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[ecf-dev] possible memory problem regarding ServiceTracker?

Hi all,

recently I had an OutOfMemory on one of our app servers which is connected to some 150 rcp clients via ecf.
In the memory dump (1GB heap) I recognized about 437000 ServiceTracker instances which, from my point of view, seems too many.


Local testing with a profiler showed, that the application server creates 11 instances of ServiceTracker for each client "connect". After closing the Client these instances stay there - they do not seem to get closed / garbage collected.

In Production the application server is running for a long time and clients come and go the whole day so this could sum up.

Please see below for the stacktraces of the ServiceTracker creation when one client connects.

Thanks for any hints or thoughts about this problem.

Best regards, Peter

PS: our setup
* we use the generic provider
* server exports / client imports 3 remote services


******* created 23681044
java.lang.Exception
at org.osgi.util.tracker.ServiceTracker.<init>(ServiceTracker.java:214)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.getClassResolver(ClassResolverObjectInputStream.java:88)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.resolveClass(ClassResolverObjectInputStream.java:98)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.eclipse.ecf.provider.generic.SOContainerGroup.readConnectRequestMessage(SOContainerGroup.java:87)
at org.eclipse.ecf.provider.generic.SOContainerGroup.handleAccept(SOContainerGroup.java:104)
at org.eclipse.ecf.provider.comm.tcp.Server$2.run(Server.java:96)
at java.lang.Thread.run(Thread.java:745)
******* created 33227769
java.lang.Exception
at org.osgi.util.tracker.ServiceTracker.<init>(ServiceTracker.java:214)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.getClassResolver(ClassResolverObjectInputStream.java:88)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.resolveClass(ClassResolverObjectInputStream.java:98)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.eclipse.ecf.provider.generic.SOContainer.deserializeContainerMessage(SOContainer.java:530)
at org.eclipse.ecf.provider.generic.SOContainer.processAsynch(SOContainer.java:868)
at org.eclipse.ecf.provider.generic.SOContainer$2.handleAsynchEvent(SOContainer.java:206)
at org.eclipse.ecf.provider.comm.tcp.Client.handleRcv(Client.java:383)
at org.eclipse.ecf.provider.comm.tcp.Client$4.run(Client.java:356)
at java.lang.Thread.run(Thread.java:745)
******* created 1588972
java.lang.Exception
at org.osgi.util.tracker.ServiceTracker.<init>(ServiceTracker.java:214)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.getClassResolver(ClassResolverObjectInputStream.java:88)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.resolveClass(ClassResolverObjectInputStream.java:98)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.eclipse.ecf.provider.generic.SOContainer.defaultDeserializeSharedObjectMessage(SOContainer.java:1009)
at org.eclipse.ecf.provider.generic.SOContainer$1.deserializeMessage(SOContainer.java:163)
at org.eclipse.ecf.provider.generic.SOContainer.deserializeSharedObjectMessage(SOContainer.java:1041)
at org.eclipse.ecf.provider.generic.SOContainer.handleSharedObjectMessage(SOContainer.java:710)
at org.eclipse.ecf.provider.generic.SOContainer.processAsynch(SOContainer.java:885)
at org.eclipse.ecf.provider.generic.SOContainer$2.handleAsynchEvent(SOContainer.java:206)
at org.eclipse.ecf.provider.comm.tcp.Client.handleRcv(Client.java:383)
at org.eclipse.ecf.provider.comm.tcp.Client$4.run(Client.java:356)
at java.lang.Thread.run(Thread.java:745)
******* created 8301198
java.lang.Exception
at org.osgi.util.tracker.ServiceTracker.<init>(ServiceTracker.java:214)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.getClassResolver(ClassResolverObjectInputStream.java:88)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.resolveClass(ClassResolverObjectInputStream.java:98)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.eclipse.ecf.provider.generic.SOContainer.deserializeContainerMessage(SOContainer.java:530)
at org.eclipse.ecf.provider.generic.SOContainer.processAsynch(SOContainer.java:868)
at org.eclipse.ecf.provider.generic.SOContainer$2.handleAsynchEvent(SOContainer.java:206)
at org.eclipse.ecf.provider.comm.tcp.Client.handleRcv(Client.java:383)
at org.eclipse.ecf.provider.comm.tcp.Client$4.run(Client.java:356)
at java.lang.Thread.run(Thread.java:745)
******* created 23539477
java.lang.Exception
at org.osgi.util.tracker.ServiceTracker.<init>(ServiceTracker.java:214)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.getClassResolver(ClassResolverObjectInputStream.java:88)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.resolveClass(ClassResolverObjectInputStream.java:98)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.eclipse.ecf.provider.generic.SOContainer.defaultDeserializeSharedObjectMessage(SOContainer.java:1009)
at org.eclipse.ecf.provider.generic.SOContainer$1.deserializeMessage(SOContainer.java:163)
at org.eclipse.ecf.provider.generic.SOContainer.deserializeSharedObjectMessage(SOContainer.java:1041)
at org.eclipse.ecf.provider.generic.SOContainer.handleSharedObjectMessage(SOContainer.java:710)
at org.eclipse.ecf.provider.generic.SOContainer.processAsynch(SOContainer.java:885)
at org.eclipse.ecf.provider.generic.SOContainer$2.handleAsynchEvent(SOContainer.java:206)
at org.eclipse.ecf.provider.comm.tcp.Client.handleRcv(Client.java:383)
at org.eclipse.ecf.provider.comm.tcp.Client$4.run(Client.java:356)
at java.lang.Thread.run(Thread.java:745)
******* created 28666476
java.lang.Exception
at org.osgi.util.tracker.ServiceTracker.<init>(ServiceTracker.java:214)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.getClassResolver(ClassResolverObjectInputStream.java:88)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.resolveClass(ClassResolverObjectInputStream.java:98)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.eclipse.ecf.provider.generic.SOContainer.deserializeContainerMessage(SOContainer.java:530)
at org.eclipse.ecf.provider.generic.SOContainer.processAsynch(SOContainer.java:868)
at org.eclipse.ecf.provider.generic.SOContainer$2.handleAsynchEvent(SOContainer.java:206)
at org.eclipse.ecf.provider.comm.tcp.Client.handleRcv(Client.java:383)
at org.eclipse.ecf.provider.comm.tcp.Client$4.run(Client.java:356)
at java.lang.Thread.run(Thread.java:745)
******* created 24957018
java.lang.Exception
at org.osgi.util.tracker.ServiceTracker.<init>(ServiceTracker.java:214)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.getClassResolver(ClassResolverObjectInputStream.java:88)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.resolveClass(ClassResolverObjectInputStream.java:98)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.eclipse.ecf.provider.generic.SOContainer.defaultDeserializeSharedObjectMessage(SOContainer.java:1009)
at org.eclipse.ecf.provider.generic.SOContainer$1.deserializeMessage(SOContainer.java:163)
at org.eclipse.ecf.provider.generic.SOContainer.deserializeSharedObjectMessage(SOContainer.java:1041)
at org.eclipse.ecf.provider.generic.SOContainer.handleSharedObjectMessage(SOContainer.java:710)
at org.eclipse.ecf.provider.generic.SOContainer.processAsynch(SOContainer.java:885)
at org.eclipse.ecf.provider.generic.SOContainer$2.handleAsynchEvent(SOContainer.java:206)
at org.eclipse.ecf.provider.comm.tcp.Client.handleRcv(Client.java:383)
at org.eclipse.ecf.provider.comm.tcp.Client$4.run(Client.java:356)
at java.lang.Thread.run(Thread.java:745)
******* created 21093621
java.lang.Exception
at org.osgi.util.tracker.ServiceTracker.<init>(ServiceTracker.java:214)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.getClassResolver(ClassResolverObjectInputStream.java:88)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.resolveClass(ClassResolverObjectInputStream.java:98)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.eclipse.ecf.provider.generic.SOContainer.deserializeContainerMessage(SOContainer.java:530)
at org.eclipse.ecf.provider.generic.SOContainer.processAsynch(SOContainer.java:868)
at org.eclipse.ecf.provider.generic.SOContainer$2.handleAsynchEvent(SOContainer.java:206)
at org.eclipse.ecf.provider.comm.tcp.Client.handleRcv(Client.java:383)
at org.eclipse.ecf.provider.comm.tcp.Client$4.run(Client.java:356)
at java.lang.Thread.run(Thread.java:745)
******* created 6684209
java.lang.Exception
at org.osgi.util.tracker.ServiceTracker.<init>(ServiceTracker.java:214)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.getClassResolver(ClassResolverObjectInputStream.java:88)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.resolveClass(ClassResolverObjectInputStream.java:98)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.eclipse.ecf.provider.generic.SOContainer.defaultDeserializeSharedObjectMessage(SOContainer.java:1009)
at org.eclipse.ecf.provider.generic.SOContainer$1.deserializeMessage(SOContainer.java:163)
at org.eclipse.ecf.provider.generic.SOContainer.deserializeSharedObjectMessage(SOContainer.java:1041)
at org.eclipse.ecf.provider.generic.SOContainer.handleSharedObjectMessage(SOContainer.java:710)
at org.eclipse.ecf.provider.generic.SOContainer.processAsynch(SOContainer.java:885)
at org.eclipse.ecf.provider.generic.SOContainer$2.handleAsynchEvent(SOContainer.java:206)
at org.eclipse.ecf.provider.comm.tcp.Client.handleRcv(Client.java:383)
at org.eclipse.ecf.provider.comm.tcp.Client$4.run(Client.java:356)
at java.lang.Thread.run(Thread.java:745)
******* created 32530145
java.lang.Exception
at org.osgi.util.tracker.ServiceTracker.<init>(ServiceTracker.java:214)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.getClassResolver(ClassResolverObjectInputStream.java:88)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.resolveClass(ClassResolverObjectInputStream.java:98)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.eclipse.ecf.provider.generic.SOContainer.deserializeContainerMessage(SOContainer.java:530)
at org.eclipse.ecf.provider.generic.SOContainer.processAsynch(SOContainer.java:868)
at org.eclipse.ecf.provider.generic.SOContainer$2.handleAsynchEvent(SOContainer.java:206)
at org.eclipse.ecf.provider.comm.tcp.Client.handleRcv(Client.java:383)
at org.eclipse.ecf.provider.comm.tcp.Client$4.run(Client.java:356)
at java.lang.Thread.run(Thread.java:745)
******* created 86212
java.lang.Exception
at org.osgi.util.tracker.ServiceTracker.<init>(ServiceTracker.java:214)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.getClassResolver(ClassResolverObjectInputStream.java:88)
at org.eclipse.ecf.core.util.ClassResolverObjectInputStream.resolveClass(ClassResolverObjectInputStream.java:98)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.eclipse.ecf.provider.generic.SOContainer.defaultDeserializeSharedObjectMessage(SOContainer.java:1009)
at org.eclipse.ecf.provider.generic.SOContainer$1.deserializeMessage(SOContainer.java:163)
at org.eclipse.ecf.provider.generic.SOContainer.deserializeSharedObjectMessage(SOContainer.java:1041)
at org.eclipse.ecf.provider.generic.SOContainer.handleSharedObjectMessage(SOContainer.java:710)
at org.eclipse.ecf.provider.generic.SOContainer.processAsynch(SOContainer.java:885)
at org.eclipse.ecf.provider.generic.SOContainer$2.handleAsynchEvent(SOContainer.java:206)
at org.eclipse.ecf.provider.comm.tcp.Client.handleRcv(Client.java:383)
at org.eclipse.ecf.provider.comm.tcp.Client$4.run(Client.java:356)
at java.lang.Thread.run(Thread.java:745)