Hoard memory allocator

{{short description|Memory allocator}}

{{Infobox software

|name = Hoard

|author = Emery Berger, Kathryn S. McKinley, Robert D. Blumofe, Paul R. Wilson

|developer = Emery Berger

|released = {{Start date|1999|09|29}}

|latest release version = 3.13

|latest release date = {{Start date and age|2019|1|1}}

|operating system = Linux, OS X, Microsoft Windows

|language = C++

|genre = Memory allocation

|license = Apache License v2

|website = {{URL|hoard.org}}

}}

The Hoard memory allocator, or Hoard, is a memory allocator for Linux, OS X, and Microsoft Windows. Hoard is designed to be efficient when used by multithreaded applications on multiprocessor computers. Hoard is distributed under the Apache License, version 2.0.

History

In 2000, its author Emery Berger benchmarked some famous memory allocators and stated Hoard improves the performance of multithreaded applications by providing fast, scalable memory management functions (malloc and free). In particular, it reduces contention for the heap (the central data structure used in dynamic memory allocation) caused when multiple threads allocate or free memory, and avoids the false sharing that can be introduced by memory allocators. At the same time, Hoard has strict bounds on fragmentation.{{Cite conference | doi = 10.1145/378993.379232| title = Hoard: A Scalable Memory Allocator for Multithreaded Applications| work = Proceedings of the ninth international conference on Architectural support for programming languages and operating systems| conference = ASPLOS-IX| pages = 117–128| date=November 2000 | last1 = Berger | first1 = E. D. | last2 = McKinley | first2 = K. S. |author2-link = Kathryn S. McKinley| last3 = Blumofe | first3 = R. D. | last4 = Wilson | first4 = P. R. | isbn = 1-58113-317-0| url = http://www.cs.umass.edu/~emery/pubs/berger-asplos2000.pdf| citeseerx = 10.1.1.1.4174}}

Hoard continues to be maintained and improved, and is in use by a number of open source and commercial projects.{{cite web |title=An alternative Memory Allocator for the standard glibc |date=2007-09-16 |url=http://ineluttabile.it/node/6 |archiveurl=https://web.archive.org/web/20111007180846/http://ineluttabile.it/node/6 |archivedate=2011-10-07}}{{cite web |title=GNU Common C++ Downloading |url=http://www.gnutelephony.org/index.php?title=GNU_Common_C%2B%2B&oldid=1105#Downloading}}

It has also inspired changes to other memory allocators such as the one in OS X since February 2008 (first released in Mac OS X Snow Leopard).{{cite web |title=I'm a Mac (or, "Emery Inside") |date=26 October 2010|url=http://emeryblogger.com/2010/10/26/im-a-mac-or-emery-inside/}}{{cite web |title=A look at how malloc works on the Mac |url=http://www.cocoawithlove.com/2010/05/look-at-how-malloc-works-on-mac.html}}

See also

{{Portal|Free and open-source software}}

  • {{annotated link|C dynamic memory allocation}}
  • {{annotated link|Manual memory management}}
  • {{annotated link|Dynamic memory allocation}}
  • {{annotated link|mimalloc}}

References

{{Reflist}}