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