A computer implemented method of allocation of memory, comprising: issuing an allocation operation for allocation of a region of a pool of a memory by a first process executed on a first processor; sending a message to a second processor indicating the allocation of the region of the pool of the memory, wherein the first processor and the second processor access the region of the pool of the memory; issuing, by a second process executed on a second processor, a free operation for release of the allocated region of the pool of the memory; and releasing, by the first processor, the allocated region of the pool of the memory as indicated in the free operation, wherein the region of the pool of the memory allocated by the first process executed on the first processor and released by the second process executed on the second processor is a same region of memory, characterized in that: wherein the first processor and the second processor are of a plurality of heterogeneous processors, wherein the first processor is of a first type of architecture and the second processor is of a second type of architecture that is different from the first type of architecture type of the first processor, wherein the first processor further comprises a first memory allocator and the second processor further comprises a second memory allocator, and wherein the first memory allocator is of a different type than the second memory allocator. issuing an allocation operation for allocation of a region of a pool of a memory by a first process executed on a first processor; sending a message to a second processor indicating the allocation of the region of the pool of the memory, wherein the first processor and the second processor access the region of the pool of the memory; issuing, by a second process executed on a second processor, a free operation for release of the allocated region of the pool of the memory; and releasing, by the first processor, the allocated region of the pool of the memory as indicated in the free operation, wherein the region of the pool of the memory allocated by the first process executed on the first processor and released by the second process executed on the second processor is a same region of memory, characterized in that: wherein the first processor and the second processor are of a plurality of heterogeneous processors, wherein the first processor is of a first type of architecture and the second processor is of a second type of architecture that is different from the first type of architecture type of the first processor, wherein the first processor further comprises a first memory allocator and the second processor further comprises a second memory allocator, and wherein the first memory allocator is of a different type than the second memory allocator. wherein the first processor and the second processor are of a plurality of heterogeneous processors, wherein the first processor is of a first type of architecture and the second processor is of a second type of architecture that is different from the first type of architecture type of the first processor, wherein the first processor further comprises a first memory allocator and the second processor further comprises a second memory allocator, and wherein the first memory allocator is of a different type than the second memory allocator.