Search:
Namespaces
Discussions
.NET v1.1
Feedback
Why doesn't GC.Collect() free memory?
Messages
Related Types
This message was discovered on
microsoft.public.dotnet.framework
.
Responses highlighted in red are from those people who are likely to be able to contribute good, authoratitive information to this discussion. They include Microsoft employees, MVP's and others who IMHO contribute well to these kinds of discussions.
Post a new message to this list...
assaf
hi all,
when i minimize my app it's immediate free most of the memory,
but when i use
GC
.Collect() it does nothing, Why?
and how can i make it work?
thanks,
assaf
Reply to this message...
.NET Smart ©
Garbage collection will not free your object if it finds that managed code
still has references to it.
Thanks
"assaf" <
Click here to reveal e-mail address
> wrote in message
news:
Click here to reveal e-mail address
...
[Original message clipped]
Reply to this message...
Girish bharadwaj
assaf:
Minimizing Application frees up memory not because of your doing but because
windows realizes that there is no (windowing) resources that will be used
when you are minimized.
This is entirely different from what happens when you call
GC
.Collect().
That is useful when there are objects without references.
".NET Smart ©" <
Click here to reveal e-mail address
> wrote in message
news:
Click here to reveal e-mail address
...
[Original message clipped]
Reply to this message...
Jochen Kalmbach
Hello assaf,
> when i minimize my app it's immediate free most of the memory,
No, it will only reduce the working set. No memory is freed!
> but when i use
GC
.Collect() it does nothing, Why?
GC
only fress memory if there are other apps which needs more memory. If
there is enough free space it will not free memory.
> and how can i make it work?
You can, expect of reducing physical RAM.
--
Greetings
Jochen
My blog about Win32 and .NET
http://blog.kalmbachnet.de/
Reply to this message...
Chris Lyon [MSFT] (VIP)
Hi Assaf
Don't use Task Manager to monitor the amount of memory your application is using. Like Jochen stated, that monitors your working set, not the amount of memory being used.
Instead, use a profiler or
GC
.TotalMemory(false).
To find out exactly what the
GC
does when you call Collect(), check out these articles:
http://msdn.microsoft.com/msdnmag/issues/1100/gci/
http://msdn.microsoft.com/msdnmag/issues/1200/GCI2/
Hope that helps
-Chris
--------------------
[Original message clipped]
--
This posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm
Note: For the benefit of the community-at-large, all responses to this message are best directed to the newsgroup/thread from which they originated.
Reply to this message...
System.GC
Ad
MBR BootFX
Best-of-breed application framework for .NET projects, developed by Matthew Baxter-Reynolds and MBR IT
Copyright © Matthew Baxter-Reynolds 2001-2008. '.NET 247 Software Development Services' is a trading style of MBR IT Solutions Ltd.
Contact Us
-
Terms of Use
-
Privacy Policy
-
www.dotnet247.com