Ik ben bezig met een applicatie die een WCF webservice consumeert. Elke paar seconden wordt er een WebMethod aangeroepen. Ik loop nou echter tegen het probleem aan dat ik een geheugenlek heb. Na verloop van tijd wordt er steeds meer unmanaged geheugen gebruikt, tot er op een gegeven moment een OutOfMemoryException komt.
Ik heb een test programma gemaakt waarbij exact hetzelfde probleem optreedt.
Om de server te consumeren heb ik de volgende code
Heeft er iemand enig idee wat ik fout doe waardoor er unmanaged geheugen weglekt?
Ik heb een test programma gemaakt waarbij exact hetzelfde probleem optreedt.
Om de server te consumeren heb ik de volgende code
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| while (true) { var binding = new WebHttpBinding { OpenTimeout = new TimeSpan(0, 0, 0, 2) }; var client = new MyServiceClient(binding, new EndpointAddress("http://server/path/")); try { var result = client.Foo("BAR"); client.Close(); } catch (Exception ex) { client.Abort(); } finally { ((IDisposable)client).Dispose(); } } [ServiceContract, XmlSerializerFormat] public interface IFoo { [OperationContract] [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "{bar}")] List<Bar> Foo(string bar); } public class MyServiceClient: ClientBase<IFoo>, IFoo { public MyServiceClient(Binding binding, EndpointAddress remoteAddress) : base(binding, remoteAddress) { Endpoint.Behaviors.Add(new WebHttpBehavior()); } public List<DocumentElement> Foo(string bar) { return Channel.Foo(bar); } } |
Heeft er iemand enig idee wat ik fout doe waardoor er unmanaged geheugen weglekt?
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”