• Want to receive the latest contracting news and advice straight to your inbox? Sign up to the ContractorUK newsletter here. Every sign up will also be entered into a draw to WIN £100 Amazon vouchers!

Garbage Collection rant

In addition to the try/finally logic, you can also use the Using reserved word on any of your objects that implement IDisposible. They will automatically be disposed off when the code exits the using block either through the normal route or when an error is thrown.
 
Forgot to mention; An object that is hanging on to an external resource and being referenced in multiple places sounds like a candidate for refactoring to me. Perhaps the object should be a singleton, or if that is not relevant then perhaps it should open and close the resource each time a read or a write is done.
 
Forgot to mention; An object that is hanging on to an external resource and being referenced in multiple places sounds like a candidate for refactoring to me. Perhaps the object should be a singleton, or if that is not relevant then perhaps it should open and close the resource each time a read or a write is done.

Don't worry, I mentioned it :wink :laugh
 
In addition to the try/finally logic, you can also use the Using reserved word on any of your objects that implement IDisposible. They will automatically be disposed off when the code exits the using block either through the normal route or when an error is thrown.

Aha! Well that's exactly what I was after, and also kind of proves that I'm right. Was it even in the original version? It seems like a bit of an after thought, and obviously abusing an existing keyword is not exactly a clean solution (although after seeing C++/CLI, nothing scares me anymore:rolleyes:).

An object that is hanging on to an external resource and being referenced in multiple places sounds like a candidate for refactoring to me. Perhaps the object should be a singleton, or if that is not relevant then perhaps it should open and close the resource each time a read or a write is done.

Exactly my point. It's not hanging onto an external resource if the lifetime of the object is very short. But thanks to GC, the lifetime could be until the end of the program.
 
Not sure how this works in C# but in Java none of the points you outline are a problem at all, providing you follow some sensible coding practices.

As for any general argument about garbage collection versus manual allocation/deallocation, that's a no brainer.
 
Not sure how this works in C# but in Java none of the points you outline are a problem at all, providing you follow some sensible coding practices.

None are a problem in assembler either, but that's not really the point.:D
 
Aha! Well that's exactly what I was after, and also kind of proves that I'm right. Was it even in the original version? It seems like a bit of an after thought, and obviously abusing an existing keyword is not exactly a clean solution (although after seeing C++/CLI, nothing scares me anymore:rolleyes:).



Exactly my point. It's not hanging onto an external resource if the lifetime of the object is very short. But thanks to GC, the lifetime could be until the end of the program.

Not really read this thread in depth so apologies if this has been covered but if you have a managed object that holds an unmanaged resource that you want to be got rid of, it is up to you to implement IDisposible (correctly!) and possibly offer an Open and Close method if the resource can be-reused (example being a database connection).

Then any coder will know that to use any class that implements IDisposible, they simply wrap the lifetime of the object in a using statement.

http://stackoverflow.com/questions/188473/how-do-you-manage-deterministic-finalization-in-c

http://www.marcclifton.com/tabid/79/Default.aspx

Simple and it works. What's the problem?
 
Aha! Well that's exactly what I was after, and also kind of proves that I'm right. Was it even in the original version? It seems like a bit of an after thought, and obviously abusing an existing keyword is not exactly a clean solution (although after seeing C++/CLI, nothing scares me anymore:rolleyes:).

It's been there since day one - not sure why I didn't mention it earlier, it goes hand in hand with the dispose pattern.
 
:( I was expecting this thread would be about wheelie bins or fortnightly collections or some other interesting rubbish. Only to find that it's about programming :sick
 

Advertisers

Back
Top