1. A method for memory management of objects which represent memory in a multi-threaded operating system, comprising: in response to a request by a consumer thread to free an object, which is allocated by a thread of the multi-threaded operating system which is the consumer thread or a different thread, back to a free list of the objects: determining, by the processor, whether the object, in the request by the consumer thread to free the object, is identified as being remote to the consumer thread; adding, by the processor, the object to a local object free list of the consumer thread, when the object is determined to not be remote; adding, by the processor, the object to a remote object free list of the consumer thread, wherein the object on the remote object free list of the consumer thread represents a foreign object that is freed and which is not available for re-use by the consumer thread, when the object is determined to be remote; determining, by the processor, whether an amount of objects on the remote object free list of the consumer thread exceeds a threshold; when the number of objects on the remote object free list of the consumer thread is determined to not exceed the threshold, bypass removing the remote object; when the number of objects on the remote object free list of the consumer thread is determined to exceed the threshold: batch-removing, by the processor, the objects from the remote object free list of the consumer thread; and adding, by the processor, the objects from the remote object free list of the consumer thread to a home free-list of a producer thread which originally allocated the objects, the producer thread is different from the consumer thread.