I suspect that it's using an internal buffer somewhere. Maybe you need to dig into the source to work out whats being held onto.
https://github.com/mono/mono/blob/master/mcs/class/System/System.Net/WebClient.cs But you could use a HttpWebRequest and have a lot more control over it, tho you then need to deal with streams and the like. also, what happens if you move the webclient out to object level, eg: void DoStuff() { WebClient client = new WebClient(); becomes WebClient client; void DoStuff() { client = new WebClient(); and void client_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e) { var webClient = sender as WebClient; webClient.DownloadDataCompleted -= client_DownloadDataCompleted; webClient.DownloadProgressChanged -= client_DownloadProgressChanged; webClient.Dispose(); webClient = null; //added client.Dispose(); client = null; So, the GC can keep easier (maybe better, maybe not :) ) track of it? On Sun, Aug 5, 2012 at 7:34 PM, Matthieu Laban <[email protected]> wrote: > Hello Guys, > > My quest for leaks continues... I'm downloading files from our server, and > the size of the files can vary between 1 and 20 MB. > The issue is that after the file is downloaded, the app's dirty size goes up > ~20MB and never goes down even if I dispose the WebClient, remove all event > listeners and call GC.Collect(). > If I run the download code a few times, it climbs 20 MB about 3x, then it > stops even if I call it again. Is there some kind of cache that is being > maintained or something? How can I make sure some of that memory is > reclaimed. We're tight on memory on the iPod Touch and we'd love to get some > of it back :) > > Here's the code that I'm running: > > void DoStuff() > { > WebClient client = new WebClient(); > client.DownloadProgressChanged += client_DownloadProgressChanged; > client.DownloadDataCompleted += client_DownloadDataCompleted; > client.DownloadDataAsync(new > Uri("http://ipv4.download.thinkbroadband.com/20MB.zip")); > } > > void client_DownloadDataCompleted(object sender, > DownloadDataCompletedEventArgs e) > { > var webClient = sender as WebClient; > webClient.DownloadDataCompleted -= client_DownloadDataCompleted; > webClient.DownloadProgressChanged -= client_DownloadProgressChanged; > webClient.Dispose(); > webClient = null; > GC.Collect(); > GC.WaitForPendingFinalizers(); > MessageBox.Show("Completed"); > } > > -- > Matt > > > _______________________________________________ > MonoTouch mailing list > [email protected] > http://lists.ximian.com/mailman/listinfo/monotouch > -- Nic Wise t. +44 7788 592 806 | @fastchicken | http://www.linkedin.com/in/nicwise b. http://www.fastchicken.co.nz/ mobileAgent (for FreeAgent): get your accounts in your pocket. http://goo.gl/IuBU Trip Wallet: Keep track of your budget on the go: http://goo.gl/ePhKa Earnest: Self-employed? Track your business expenses and income. http://earnestapp.com Nearest Bus: find when the next bus is coming to your stop. http://goo.gl/Vcz1p London Bike App: Find the nearest Boris Bike, and get riding! http://goo.gl/Icp2 _______________________________________________ MonoTouch mailing list [email protected] http://lists.ximian.com/mailman/listinfo/monotouch
