1. A garbage collection method comprising: providing ordinary pointers to point only to local objects, said local objects are objects that must expire before invocations that create them; providing owning and non-owning pointers to point only to managed objects, said managed objects are objects that may outlive invocations that create them; determining whether said managed objects are reachable from at least one of said owning pointers; destroying or marking for destruction at least one of said managed objects when said at least one of said managed objects is un-reachable through said at least one of said owning pointers or said at least one of said non-owning pointers; and nullifying said non-owning pointers pointing to said at least one of said managed objects when said at least one of said managed objects is destroyed or marked for destruction.