I'm currently working entirely within a Websphere/Java/JSP environment. Last year I was working entirely within a IIS/VB/COM/ASP environment. If you're working in the latter environment there's a chance that a "best practice" has escaped your attention as it did ours.
When Microsoft says the Visual Basic runtime behaves differently based on whether the "Unattended Execution" and "Retain in Memory" options are selected, they are not kidding. It will unload your custom DLLs unexpectedly causing IIS or MTS to hang in some multithreaded scenarios and particularly under heavy user volumes.
This kind of unloading is ideal if you like calls at 4am.