• Stars
    star
    383
  • Rank 111,995 (Top 3 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created over 12 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Heap Layers: An Extensible Memory Allocation Infrastructure

Heap Layers: An Extensible Memory Allocation Infrastructure

Copyright (C) 2000 - 2021 by Emery Berger

Heap Layers is distributed under the terms of the Apache 2.0 license.

Introduction

Heap Layers provides a flexible infrastructure for composing high-performance memory allocators out of C++ layers. Heap Layers makes it easy to write high-quality custom and general-purpose memory allocators. Heap Layers has been used successfully to build a number of high-performance allocators, including Hoard and DieHard.

Using Heap Layers

For an introduction to Heap Layers, read the article Policy-Based Memory Allocation, by Andrei Alexandrescu and Emery Berger. It's a good overview. See also "Memory Allocation: Either Love It or Hate It (or just think it’s okay)", a talk by Andrei.

Heap Layers contains a number of ready-made heap components that can be plugged together with minimal effort, and the result is often faster than hand-built allocators. The PLDI 2001 paper Composing High-Performance Memory Allocators has plenty of examples.

Performance

Heap Layers can substantially outperform its only real competitor, the Vmalloc package from AT&T. The OOPSLA 2002 paper Reconsidering Custom Memory Allocation paper has more details.

Not only is Heap Layers much higher level and simpler to use, but its use of templates also improves performance. Heap Layers both eliminates the function call overhead imposed by Vmalloc layers and yields higher quality code by exposing more optimization opportunities.

Citation

To reference Heap Layers in an academic paper, please cite as follows:

@inproceedings{DBLP:conf/pldi/BergerZM01,
  author    = {Emery D. Berger and
               Benjamin G. Zorn and
               Kathryn S. McKinley},
  title     = {Composing High-Performance Memory Allocators},
  booktitle = {Proceedings of the 2001 {ACM} {SIGPLAN} Conference on Programming
               Language Design and Implementation (PLDI), Snowbird, Utah, USA, June
               20-22, 2001},
  pages     = {114--124},
  year      = {2001},
  crossref  = {DBLP:conf/pldi/2001},
  url       = {https://doi.org/10.1145/378795.378821},
  doi       = {10.1145/378795.378821},
  timestamp = {Wed, 14 Nov 2018 10:54:59 +0100},
  biburl    = {https://dblp.org/rec/bib/conf/pldi/BergerZM01},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}

@proceedings{DBLP:conf/pldi/2001,
  editor    = {Michael Burke and
               Mary Lou Soffa},
  title     = {Proceedings of the 2001 {ACM} {SIGPLAN} Conference on Programming
               Language Design and Implementation (PLDI), Snowbird, Utah, USA, June
               20-22, 2001},
  publisher = {{ACM}},
  year      = {2001},
  url       = {http://dl.acm.org/citation.cfm?id=378795},
  isbn      = {1-58113-414-2},
  timestamp = {Mon, 21 May 2012 16:19:53 +0200},
  biburl    = {https://dblp.org/rec/bib/conf/pldi/2001},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}

More Repositories

1

CSrankings

A web app for ranking computer science departments according to their research output in selective venues, and for finding active faculty across a wide range of areas.
Python
2,708
star
2

Hoard

The Hoard Memory Allocator: A Fast, Scalable, and Memory-efficient Malloc for Linux, Windows, and Mac.
C++
1,099
star
3

Malloc-Implementations

A collection of memory allocators
C
435
star
4

DieHard

DieHard: An error-resistant memory allocator for Windows, Linux, and Mac OS X
C
398
star
5

csconferences

Major CS conference publication stats (including accepted and submitted) by year.
Python
109
star
6

dthreads

dthreads: Efficient Deterministic Multithreading
C
49
star
7

cheap

Cheap: customized heaps for improved application performance.
C++
25
star
8

COMPSCI-630

Public notes, etc. for CMPSCI 630, the UMass CS graduate systems course.
TeX
21
star
9

web-programming

web programming course (COMPSCI 326, UMass Amherst)
JavaScript
14
star
10

COMPSCI590S

Systems for Data Science repo
TeX
12
star
11

Grace

Grace - a replacement for pthreads that enforces sequential semantics (stronger than determinism).
C
10
star
12

PLDI-2016

Documents related to PLDI 2016.
TeX
9
star
13

hangover

Basic fuzzer for malloc implementations
C++
9
star
14

PC-Resources

Resources for conference program chairs, especially in systems/PL areas of computer science.
Python
8
star
15

ApproximateCounter

A C++ implementation of a scalable approximate counter.
C++
4
star
16

COMPSCI-630-S18-Assignment1

Rust
2
star
17

opendetex

Automatically exported from code.google.com/p/opendetex
Lex
2
star
18

publications

Emery Berger publications
TeX
2
star
19

emeryberger

2
star
20

eon

The Eon programming language
C
1
star
21

bertsort

C++
1
star
22

ASPLOS-2021

Python
1
star
23

Jack

You don't know Jack.
C++
1
star
24

wordle-solver

"Finds" the wordle solution of the day
HTML
1
star