Famous Interview Question and can find so many references -
In normal .NET environment objects lifetime is managed by garbage collector. But in remoting environment remote clients can access objects which are out of control of garbage collector. Garbage collector boundary is limited to a single PC on which framework is running; any remote client across physical PC is out of control of GC (Garbage Collector).
This constraint of garbage collector leads to a new way of handling lifetime for remoting objects, by using concept called as LeaseTime. Every server side object is assigned by default a LeaseTime of five minutes. This leasetime is decreased at certain intervals. Again for every method call a default of two minutes is assigned. When I say method call means every call made from client. This is called as RenewalOnCallTime. Let’s put the whole thing in equation to make the concept more clear.
Total Remoting object life time = LeaseTime + (Number of method calls) X (RenewalTime).
If we take NumberOfMethodCalls as one, then
default Remote Object Life Time = 5 + (1) X 2 = 10 minutes (Everything is in minutes)
When total object lifetime is reduced to zero, it queries the sponsor that should the object be destroyed. Sponsor is an object which decides should object Lifetime be renewed. So it queries any registered sponsors with the object, if does not find any then the object is marked for garbage collection. After this garbage collection has whole control on the object lifetime. If we do not foresee how long a object will be needed specify the SponsorShipTimeOut value. SponsorShipTimeOut is time unit a call to a sponsor is timed out. LeaseManagerPollTime defines the time the sponsor has to return a lease time extension