While the garbage collector does appear to do its job whenever the window is in focus, the program still seems to like to very quickly climb up to about 2GB of memory usage when sitting idle. (picture attached). If I put the window back into focus, the GC appears to do its job pretty readily. The climb-rate is pretty high - the memory usage hits 2GB in a matter of about a minute. Does anyone know what the cause of this might be? I'm working on getting the development environment and Git material setup so that I can perhaps contribute to making the software better.
Computer used for the LitePlacer is a fairly weathered machine, nothing fancy, but also not unreasonably slow:
Win7 64-bit
Intel Core 2 Duo E6580 3.00GHz
4GB RAM (can easily add more if needed, but haven't had the need yet)
Memory Leak
Memory Leak
- Attachments
-
- Picture of memory leak
- MemLeak.png (5.88 KiB) Viewed 6266 times
Re: Memory Leak
Here is another screenshot; I reproduced the error whilst debugging using Visual Studio 2013
- Attachments
-
- MemLeak2.png (98.52 KiB) Viewed 6255 times
Re: Memory Leak
I tried to reproduce this but failed. Just checking, are you using the latest (this week) update? The changes might have fixed this already (or not). If yes, obviously I need to look much deeper.
Re: Memory Leak
Yes, I am using the 1/13/2016 update.
EDIT: I just saw your commit on GitHub (https://github.com/jkuusama/LitePlacer- ... 6d8c2c97af); tried merging in the changes. The memory used by the application is much more stable now, though it seems like the cameras are now not receiving frames...
EDIT: I just saw your commit on GitHub (https://github.com/jkuusama/LitePlacer- ... 6d8c2c97af); tried merging in the changes. The memory used by the application is much more stable now, though it seems like the cameras are now not receiving frames...
Re: Memory Leak
Hmph. For development, it is good to have a system that reliably fails. It is not so good if all of those systems are at customers. I didn't have a memory issue to begin with, but I did see activity on the garbage collector at some situations. Today's version is stable in that regard for me too, but I do get frames. Obviously, I overdid it; I should not dispose all frames, some should go to display, too.
But I think I'm on a right track. Apparently, this is Windows/NET version specific (as I don't have these issues). If the image boxes or some other part of the chain does not dispose old video frames when getting a new one, memory would fill up fast. You didn't show units in your graph, but it is maybe about 1GB/minute, which is suspiciously close to 480*640 pixels, 1 byte per pixel ( which is 0.3MB/frame) at 50 frames/s (which is 3000 frames / minute) = 0.9GB.
Back to the lab...
But I think I'm on a right track. Apparently, this is Windows/NET version specific (as I don't have these issues). If the image boxes or some other part of the chain does not dispose old video frames when getting a new one, memory would fill up fast. You didn't show units in your graph, but it is maybe about 1GB/minute, which is suspiciously close to 480*640 pixels, 1 byte per pixel ( which is 0.3MB/frame) at 50 frames/s (which is 3000 frames / minute) = 0.9GB.
Back to the lab...
- Mark Harris
- Posts: 38
- Joined: Sat Nov 14, 2015 12:34 am
- Location: Calgary, AB
Re: Memory Leak
Buy something like ReSharper, CodeRush or JustCode - it will tell you all the places you havent correctly disposed of an IDisposable and can add using () { .. } statements.
Using Telerik's JustTrace will tell you exactly where you're building up objects, and allow you to optimise your code a lot too
Using Telerik's JustTrace will tell you exactly where you're building up objects, and allow you to optimise your code a lot too
Re: Memory Leak
When I started my merged Liteplacer Version I found several missing disposals in the graphic routines (bitmaps, graphics, brushes, pens) from Juha and reza.
I am using CodeRush btw. and due to the fact that I deal a lot with graphics in my commercial applications you get a sense for that creeping out of memory bomb.
I already pointed out that fact last July, but it seemed to have been ignored
http://liteplacer.com/phpBB/viewtopic.p ... +leak#p525
rezas "garbage collector cleans everything up" is IMHO wrong because these objects are unmanaged memory allocations and are not under the GC surveillance.
I am using CodeRush btw. and due to the fact that I deal a lot with graphics in my commercial applications you get a sense for that creeping out of memory bomb.
I already pointed out that fact last July, but it seemed to have been ignored
http://liteplacer.com/phpBB/viewtopic.p ... +leak#p525
rezas "garbage collector cleans everything up" is IMHO wrong because these objects are unmanaged memory allocations and are not under the GC surveillance.
best regards
Manfred
Manfred
Re: Memory Leak
No, it was not ignored, this is more involved. I'm not sure what exactly is happening (would I know, I'd fix it), but in some cases and some systems*, the disposing doesn't work. The programmer's fault, of course, but if I dispose used video frames late or rely the image box to do it (current release) they might get piled up when the image is not displayed (minimized, background). If I dispose early (currently the topmost on GitHub), some systems don't display the image in the first place.
*: My garbage collector is better than dc37's. The only hint of a potential problem I see is some more activity on memory usage at some situations. My version of.NET or Windows itself is also better than some people who have tried the current GitHub version. I see video when they don't.
I'll keep working on this and obviously, I also need to get some better tools.
*: My garbage collector is better than dc37's. The only hint of a potential problem I see is some more activity on memory usage at some situations. My version of.NET or Windows itself is also better than some people who have tried the current GitHub version. I see video when they don't.
I'll keep working on this and obviously, I also need to get some better tools.
Re: Memory Leak
If it's an outdated .NET version, then maybe an update will fix it? I'll see what happens when I do that.
Update: I made sure that the .NET framework 4.5.2 was installed and that Win7 was reasonably up to date with updates (last updated ~Dec 10)
Unfortunately I still have the same problem.
Update: I made sure that the .NET framework 4.5.2 was installed and that Win7 was reasonably up to date with updates (last updated ~Dec 10)
Unfortunately I still have the same problem.
Re: Memory Leak
More information that may help with debug: This error seems to be the worst when I am in the "basic setup" tab. With other tabs, it seems like the GC is doing its job properly.