Application recycling is a technique whereby a long-running process is automatically stopped and restarted at periodic intervals or whenever resource usage thresholds are reached. This can be a solution to problems with misbehaving client applications, memory leaks, and other resource usage issues.
This may seem like a non-solution or a hack, but there are times when reliance on third-party components or problems with distributed garbage collection lead to resource leaks or scalability problems that cannot be solved by fixing your own code.
ComPlus 1.5 provides support for application recycling.
No offense to the vendors in the audience, but one of the best arguments against reliance on closed source third-party components is that fact that this technique really is necessary sometimes, and its necessity seems to vary directly with the number of closed-source applications thus relied upon.
One may still wish to employ this approach when the third-party code is available, too. However, it's a choice at that point, not an necessity; if the technique becomes too painful or the resources come free, you can make the necessary change to the third-party code and go your merry way. (Or look at the third-party code and realize you were using it wrong in your code. Not that that's happened to me, of course.... :) -- PhilGroce
Apache, iirc, has a similar heuristic where it kills off worker processes after a while, on the assumption that they are probably leaking some sort of resource somewhere. This seems like a slightly weird behaviour: it's admitting that you're not perfect; however, like most software, Apache isn't perfect - at least it's honest with itself. There's a moral to this story for all of us.
Usually when I see this in a J2EE application it's an AntiPattern that tells me something is seriously wrong with their application's resource management. Typically this is caused by people writing their own connection pool implementation (this just never works because busy developers don't take the time to consider all the myriad corner cases and just whip up something which seems to work) or not knowing how to close/release connections.