{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:14:58Z","timestamp":1750306498912,"version":"3.41.0"},"reference-count":22,"publisher":"Association for Computing Machinery (ACM)","issue":"8S","license":[{"start":{"date-parts":[[2015,12,4]],"date-time":"2015-12-04T00:00:00Z","timestamp":1449187200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGPLAN Not."],"published-print":{"date-parts":[[2015,12,4]]},"abstract":"<jats:p>Dynamic memory allocators (malloc\/free) rely on mutual exclusion locks for protecting the consistency of their shared data structures under multithreading. The use of locking has many disadvantages with respect to performance, availability, robustness, and programming flexibility. A lock-free memory allocator guarantees progress regardless of whether some threads are delayed or even killed and regardless of scheduling policies. This paper presents a completely lockfree memory allocator. It uses only widely-available operating system support and hardware atomic instructions. It offers guaranteed availability even under arbitrary thread termination and crash-failure, and it is immune to deadlock regardless of scheduling policies, and hence it can be used even in interrupt handlers and real-time applications without requiring special scheduler support. Also, by leveraging some high-level structures from Hoard, our allocator is highly scalable, limits space blowup to a constant factor, and is capable of avoiding false sharing. In addition, our allocator allows finer concurrency and much lower latency than Hoard. We use PowerPC shared memory multiprocessor systems to compare the performance of our allocator with the default AIX 5.1 libc malloc, and two widely-used multithread allocators, Hoard and Ptmalloc. Our allocator outperforms the other allocators in virtually all cases and often by substantial margins, under various levels of parallelism and allocation patterns. Furthermore, our allocator also offers the lowest contention-free latency among the allocators by significant margins<\/jats:p>","DOI":"10.1145\/2854695.2854697","type":"journal-article","created":{"date-parts":[[2015,12,7]],"date-time":"2015-12-07T19:33:52Z","timestamp":1449516832000},"page":"11-22","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["PLDI 2004"],"prefix":"10.1145","volume":"50","author":[{"given":"Maged M.","family":"Michael","sequence":"first","affiliation":[{"name":"IBM Thomas J. Watson Research Center, Yorktown Heights, NY"}]}],"member":"320","published-online":{"date-parts":[[2015,12,4]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/2.546611"},{"key":"e_1_2_1_2_1","unstructured":"Emery D. Berger. Memory Management for High- Performance Applications. PhD thesis University of Texas at Austin August 2002.   Emery D. Berger. Memory Management for High- Performance Applications. PhD thesis University of Texas at Austin August 2002."},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/378993.379232"},{"key":"e_1_2_1_4_1","first-page":"272","volume-title":"Proceedings of the 1985 International Conference on Parallel Processing","author":"Bigler Bruce M.","year":"1985"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/512429.512451"},{"key":"e_1_2_1_6_1","unstructured":"Wolfram Gloger. Dynamic Memory Allocator Implementations in Linux System Libraries. http:\/\/www.dent.med.uni-muenchen.de\/~wmglo\/.  Wolfram Gloger. Dynamic Memory Allocator Implementations in Linux System Libraries. http:\/\/www.dent.med.uni-muenchen.de\/~wmglo\/."},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/114005.102808"},{"key":"e_1_2_1_8_1","first-page":"A22","author":"Extended Architecture IBM. IBM","year":"1983","journal-title":"Principles of Operation"},{"volume-title":"2003 Edition","year":"2003","author":"IEEE.","key":"e_1_2_1_9_1"},{"volume-title":"MIT","year":"1992","author":"Iyengar Arun K.","key":"e_1_2_1_10_1"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1109\/SPDP.1993.395547"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/359863.359878"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/286860.286880"},{"key":"e_1_2_1_14_1","unstructured":"Doug Lea. A Memory Allocator. http:\/\/gee.cs.oswego.edu\/dl\/html\/malloc.html.  Doug Lea. A Memory Allocator. http:\/\/gee.cs.oswego.edu\/dl\/html\/malloc.html."},{"volume-title":"Proceedings of the FREENIX Track of the 2000 USENIX Annual Technical Conference","year":"2000","author":"Lever Chuck","key":"e_1_2_1_15_1"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/564870.564881"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/571825.571829"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2004.8"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/248052.248106"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/872035.872049"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/12.286299"},{"volume-title":"Proceedings of the 1995 International Workshop on Memory Management","author":"Wilson Paul R.","key":"e_1_2_1_23_1"}],"container-title":["ACM SIGPLAN Notices"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2854695.2854697","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2854695.2854697","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T05:48:47Z","timestamp":1750225727000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2854695.2854697"}},"subtitle":["Scalable Lock-Free Dynamic Memory Allocation"],"short-title":[],"issued":{"date-parts":[[2015,12,4]]},"references-count":22,"journal-issue":{"issue":"8S","published-print":{"date-parts":[[2015,12,4]]}},"alternative-id":["10.1145\/2854695.2854697"],"URL":"https:\/\/doi.org\/10.1145\/2854695.2854697","relation":{},"ISSN":["0362-1340","1558-1160"],"issn-type":[{"type":"print","value":"0362-1340"},{"type":"electronic","value":"1558-1160"}],"subject":[],"published":{"date-parts":[[2015,12,4]]},"assertion":[{"value":"2015-12-04","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}