Ik zit met een probleem waarvan ik zelf niet begrijp waarom dit zich voorkomt.
Ik heb een remotingservice die een object aanbied als well known singleton:
het object aanroepen doe ik met:
nu is de double array 160 mb. Opzich geen probleem als het maar een singleton blijft. Maar wat ik merk is dat hij voor elke referentie 160 mb reserveert, waardoor ik je redelijk snel tegen de max aanloopt en hij een outofmemory exception geeft.
het zijn overigens MarshalByRefComponent dus het object wordt net eens verplaatst naar de client. (MarshalByValueComponent geven weer andere problemen)
ik begrijp nog steeds niet waarom hij voor elke connectie een extra object maakt (of geheugen reserveert) en waarom hij bij het sluiten van de connectie dat geheugen niet weer vrijgeeft. Iemand enig idee?
Ik heb een remotingservice die een object aanbied als well known singleton:
code:
1
2
3
| TcpChannel channel = new TcpChannel(10501); ChannelServices.RegisterChannel(channel, false); RemotingConfiguration.RegisterWellKnownServiceType(typeof(DoubleArray), "DoubleArray", WellKnownObjectMode.Singleton); |
het object aanroepen doe ik met:
code:
1
| q = (DoubleArray)Activator.GetObject(typeof(DoubleArray), "tcp://localhost:10501/DoubleArray", WellKnownObjectMode.Singleton); |
nu is de double array 160 mb. Opzich geen probleem als het maar een singleton blijft. Maar wat ik merk is dat hij voor elke referentie 160 mb reserveert, waardoor ik je redelijk snel tegen de max aanloopt en hij een outofmemory exception geeft.
het zijn overigens MarshalByRefComponent dus het object wordt net eens verplaatst naar de client. (MarshalByValueComponent geven weer andere problemen)
ik begrijp nog steeds niet waarom hij voor elke connectie een extra object maakt (of geheugen reserveert) en waarom hij bij het sluiten van de connectie dat geheugen niet weer vrijgeeft. Iemand enig idee?
U can call me sir.... or justice as long as u bow down ;)