1. A method of transferring data between services using shared memory, comprising: controlling sharing of a memory object; determining if outstanding handles to said memory object exist; and if said outstanding handles do not exist, transferring a pointer to said memory object from a first service to a second service to avoid making a copy of said memory object.