Garbage Collection in C#.
-
After how much time later the garbage collector is called automatically to recycle the objects?How the garbage collector Knows to which object has to be recycled in the memory? And where we have to Call the garbage collector? Example: If i have write a code of 500 lines and define a object in the starting and use the object in second last line of the code. Is the garbage collector recycle the object before its use or not.
Hey, lmgtfy! :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
After how much time later the garbage collector is called automatically to recycle the objects?How the garbage collector Knows to which object has to be recycled in the memory? And where we have to Call the garbage collector? Example: If i have write a code of 500 lines and define a object in the starting and use the object in second last line of the code. Is the garbage collector recycle the object before its use or not.
hey Ashwani Dhiman what in your case when you create an object in first line and used in last line it does not matter that you are using the object or not in your code, the thing is the memory which is used by the object is referenced by any variable or not i.e accessible or not by your code when memory location is dangling garbage collector will recollect those hope this will help u :-)
modified on Monday, April 6, 2009 6:31 AM
-
After how much time later the garbage collector is called automatically to recycle the objects?How the garbage collector Knows to which object has to be recycled in the memory? And where we have to Call the garbage collector? Example: If i have write a code of 500 lines and define a object in the starting and use the object in second last line of the code. Is the garbage collector recycle the object before its use or not.
Ashwani Dhiman wrote:
After how much time later the garbage collector is called automatically to recycle the objects?
When it needs to, or when you ask it (but even then it may not).
Ashwani Dhiman wrote:
How the garbage collector Knows to which object has to be recycled in the memory?
When garbage collection is run it maps all objects in the system. Any that are not referenced somewhere down the object graph from a known root are discarded. Root objects are those that are statically declared.
Ashwani Dhiman wrote:
And where we have to Call the garbage collector?
You don't. It happens when it needs to.
Ashwani Dhiman wrote:
If i have write a code of 500 lines and define a object in the starting and use the object in second last line of the code. Is the garbage collector recycle the object before its use or not.
If it needs to then yes. Otherwise then no.
*Developer Day Scotland - Free community conference Delegate Registration Open
-
hey Ashwani Dhiman what in your case when you create an object in first line and used in last line it does not matter that you are using the object or not in your code, the thing is the memory which is used by the object is referenced by any variable or not i.e accessible or not by your code when memory location is dangling garbage collector will recollect those hope this will help u :-)
modified on Monday, April 6, 2009 6:31 AM
akhilonly007 wrote:
hope this will help u
Please write properly. It is very difficult to read text-speak and not everyone on this forum has a sufficient knowledge of English to interpret poorly written text-speak laiden prose.
*Developer Day Scotland - Free community conference Delegate Registration Open
-
akhilonly007 wrote:
hope this will help u
Please write properly. It is very difficult to read text-speak and not everyone on this forum has a sufficient knowledge of English to interpret poorly written text-speak laiden prose.
*Developer Day Scotland - Free community conference Delegate Registration Open
hey Colin Angus Mackay :-( sorry if i hv written incomplete ans, as others on this forum me too poor in writing english but try to give ans as u hv given i.e point to point
-
hey Colin Angus Mackay :-( sorry if i hv written incomplete ans, as others on this forum me too poor in writing english but try to give ans as u hv given i.e point to point
Please try to use complete words, it makes it so much easier for everyone.
akhilonly007 wrote:
sorry if i hv written incomplete ans, as others on this forum me too poor in writing english but try to give ans as u hv given i.e point to point
hv = have (x2) ans = answer (x2) u = you
Dave
BTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)
Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia) -
hey Colin Angus Mackay :-( sorry if i hv written incomplete ans, as others on this forum me too poor in writing english but try to give ans as u hv given i.e point to point
My issue was the use of text-speak which you continue to do. For example: hv = have ans = answer u = you People who do not have a good level of English will be confused by the use of text-speak as it relies on a good level of understanding of the language.
*Developer Day Scotland - Free community conference Delegate Registration Open
-
hey Colin Angus Mackay :-( sorry if i hv written incomplete ans, as others on this forum me too poor in writing english but try to give ans as u hv given i.e point to point
ok thanks for guiding me from now onwards i will not repeat such mistakes :-)
-
After how much time later the garbage collector is called automatically to recycle the objects?How the garbage collector Knows to which object has to be recycled in the memory? And where we have to Call the garbage collector? Example: If i have write a code of 500 lines and define a object in the starting and use the object in second last line of the code. Is the garbage collector recycle the object before its use or not.
The garbage colector is indeterministic when it runs. This means there is no set interval or 'state' that will trigger it to run. If you are having a specific issue with the GC then you may want to post that as the GC is a beast that many have tried to tame and many have failed. It usually depends on what you are doing and what you are expecting to happen with your available memory. Some simple stuff about the GC. There are 3 levels of objects. G0, G1, G2, where G2 have been around the longest. Statitistics show if an object gets to G1 it will likely get to G2. G2 Collection is BAD. You can have the GC run in Concurrent (runs in the background) mode or in Server mode (pauses all threads while GC is running). To reiterate again, you need to know what you are wanting from the GC before you start messing with it. Oh and Microsoft claims the the GC in VS 2010 is "Better", whatever the heck that means (I do not recall a time when microsoft released a product and claimed something about it was "worse" or the same for that mattter).
-
The garbage colector is indeterministic when it runs. This means there is no set interval or 'state' that will trigger it to run. If you are having a specific issue with the GC then you may want to post that as the GC is a beast that many have tried to tame and many have failed. It usually depends on what you are doing and what you are expecting to happen with your available memory. Some simple stuff about the GC. There are 3 levels of objects. G0, G1, G2, where G2 have been around the longest. Statitistics show if an object gets to G1 it will likely get to G2. G2 Collection is BAD. You can have the GC run in Concurrent (runs in the background) mode or in Server mode (pauses all threads while GC is running). To reiterate again, you need to know what you are wanting from the GC before you start messing with it. Oh and Microsoft claims the the GC in VS 2010 is "Better", whatever the heck that means (I do not recall a time when microsoft released a product and claimed something about it was "worse" or the same for that mattter).
Collin Jasnoch wrote:
G2 Collection is BAD
It isn't bad. It just takes the longest because it is where all the large or aged objects are placed. This means it doesn't have the same performance as a G0 collection. Saying it is bad is like saying an ADSL connection to the internet is bad because you can transfer data from your hard disk faster.
Collin Jasnoch wrote:
Microsoft claims the the GC in VS 2010 is "Better", whatever the heck that means
Technology has moved on. Hardware has changed. Now the garbage collector supports the features of newer hardware that it didn't in the past.
*Developer Day Scotland - Free community conference Delegate Registration Open
-
Collin Jasnoch wrote:
G2 Collection is BAD
It isn't bad. It just takes the longest because it is where all the large or aged objects are placed. This means it doesn't have the same performance as a G0 collection. Saying it is bad is like saying an ADSL connection to the internet is bad because you can transfer data from your hard disk faster.
Collin Jasnoch wrote:
Microsoft claims the the GC in VS 2010 is "Better", whatever the heck that means
Technology has moved on. Hardware has changed. Now the garbage collector supports the features of newer hardware that it didn't in the past.
*Developer Day Scotland - Free community conference Delegate Registration Open
-
Ashwani Dhiman wrote:
After how much time later the garbage collector is called automatically to recycle the objects?
When it needs to, or when you ask it (but even then it may not).
Ashwani Dhiman wrote:
How the garbage collector Knows to which object has to be recycled in the memory?
When garbage collection is run it maps all objects in the system. Any that are not referenced somewhere down the object graph from a known root are discarded. Root objects are those that are statically declared.
Ashwani Dhiman wrote:
And where we have to Call the garbage collector?
You don't. It happens when it needs to.
Ashwani Dhiman wrote:
If i have write a code of 500 lines and define a object in the starting and use the object in second last line of the code. Is the garbage collector recycle the object before its use or not.
If it needs to then yes. Otherwise then no.
*Developer Day Scotland - Free community conference Delegate Registration Open
Colin Angus Mackay wrote:
or when you ask it (but even then it may not).
Hmm, I thought
GC.Collect
forces a garbage collection?Regards Senthil [MVP - Visual C#] _____________________________ My Home Page |My Blog | My Articles | My Flickr | WinMacro
-
Collin Jasnoch wrote:
G2 Collection is BAD
It isn't bad. It just takes the longest because it is where all the large or aged objects are placed. This means it doesn't have the same performance as a G0 collection. Saying it is bad is like saying an ADSL connection to the internet is bad because you can transfer data from your hard disk faster.
Collin Jasnoch wrote:
Microsoft claims the the GC in VS 2010 is "Better", whatever the heck that means
Technology has moved on. Hardware has changed. Now the garbage collector supports the features of newer hardware that it didn't in the past.
*Developer Day Scotland - Free community conference Delegate Registration Open
Colin Angus Mackay wrote:
It isn't bad. It just takes the longest because it is where all the large or aged objects are placed. This means it doesn't have the same performance as a G0 collection.
Large objects (IIRC >85k) have their own heap separate from the G0/1/2 heaps. It's managed differently in that objects are fixed and the heap doesn't compact after a collect. Instead it uses a c++eqsue traversal algorithm to find a suitable place to store new objects.
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall
-
Colin Angus Mackay wrote:
It isn't bad. It just takes the longest because it is where all the large or aged objects are placed. This means it doesn't have the same performance as a G0 collection.
Large objects (IIRC >85k) have their own heap separate from the G0/1/2 heaps. It's managed differently in that objects are fixed and the heap doesn't compact after a collect. Instead it uses a c++eqsue traversal algorithm to find a suitable place to store new objects.
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall
Every day is a school day!
*Developer Day Scotland - Free community conference Delegate Registration Open
-
Every day is a school day!
*Developer Day Scotland - Free community conference Delegate Registration Open
And despite reading about it a week or two ago, I didn't quite get it right. The allocator prefers the end of the heap to free space except when it would otherwise be forced to grow the heap. In certain unexpected circumstances this can bite you badly. http://www.simple-talk.com/dotnet/.net-framework/the-dangers-of-the-large-object-heap/[^]
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall
-
The garbage colector is indeterministic when it runs. This means there is no set interval or 'state' that will trigger it to run. If you are having a specific issue with the GC then you may want to post that as the GC is a beast that many have tried to tame and many have failed. It usually depends on what you are doing and what you are expecting to happen with your available memory. Some simple stuff about the GC. There are 3 levels of objects. G0, G1, G2, where G2 have been around the longest. Statitistics show if an object gets to G1 it will likely get to G2. G2 Collection is BAD. You can have the GC run in Concurrent (runs in the background) mode or in Server mode (pauses all threads while GC is running). To reiterate again, you need to know what you are wanting from the GC before you start messing with it. Oh and Microsoft claims the the GC in VS 2010 is "Better", whatever the heck that means (I do not recall a time when microsoft released a product and claimed something about it was "worse" or the same for that mattter).
Collin Jasnoch wrote:
To reiterate again, you need to know what you are wanting from the GC before you start messing with it. Oh and Microsoft claims the the GC in VS 2010 is "Better", whatever the heck that means (I do not recall a time when microsoft released a product and claimed something about it was "worse" or the same for that mattter).
Well obvious possibilities occur: One would be doing fewer G1 collects to reduce the number of objects making it to G2. The second would be to change the large object heap to avoid the sort of problems in the article I linked elsewhere in the thread. Changing the end of the free memory chain would mitigate the pathological case described. Another option would be to suck it up and compact it (at least partially) if the utilization fraction got too low. In extremis only attempting to do so when an out of memory error would otherwise occur, but would still generate large amounts of flack for making the poor management visible. "My app gobbled xGB of unused ram before releasing 99% of it." This would also be impractical if running x64 code because of the larger address space.
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall