Hoard is an allocator whose goal is scalable memory allocation performance. A new internal memory allocator, jemalloc, is used rather than the default libc one. The allocator will usually expand and contract the heap to fulfill allocation requests. The memory allocator can use this free block of memory for future allocations. Implementation of the allocator is commonly done using the heap, or data segment. The dynamic memory allocator implementation has changed over time. The virtual memory system, memory allocator and trap handling were made MP safe. By default all objects use the operating system's default allocator. Before Lollipop there was a single native memory allocator, Doug Lea's dlmalloc. The garbage collector will almost always be closely integrated with the memory allocator. He developed the talloc hierarchical memory allocator, originally as part of Samba. It is used in Linux and became the default allocator since 2.6.23. The code generator and register allocator were also rewritten. However, the "server" virtual machine used a color-graph allocator and did not have this problem. Each trace is then independently processed by the allocator.