We are in the middle of a design and are starting to split on a couple issues. I was hoping to get some input or maybe some articles that might address some of our confusion.

The main point is, is it better to instantiate and destroy objects, or keep them in memory for the life of the program (or a "long" time whatever that is) ?

One camp here argues that .Net takes care of all this objects creation and destruction, and so just do what you need, when you need to.

The other camp argues that it's better to instatiate once, and keep what you need "handy". Especially if these objects would require stuff like database access or file access on creation or implementation.

Any insight would be great.