The portable common runtime approach to interoperability
SOSP '89 Proceedings of the twelfth ACM symposium on Operating systems principles
Fast allocation and deallocation of memory based on object lifetimes
Software—Practice & Experience
The annotated C++ reference manual
The annotated C++ reference manual
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
The C++ programming language (2nd ed.)
The C++ programming language (2nd ed.)
The measured cost of conservative garbage collection
Software—Practice & Experience
Region-based memory management
Information and Computation
Memory management with explicit regions
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
The memory fragmentation problem: solved?
Proceedings of the 1st international symposium on Memory management
Cache-conscious structure layout
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Conservative garbage collection for general memory allocators
Proceedings of the 2nd international symposium on Memory management
Communications of the ACM
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Heap profiling for space-efficient Java
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Composing high-performance memory allocators
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Efficient representations and abstractions for quantifying and exploiting data reference locality
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Hoard: a scalable memory allocator for multithreaded applications
ASPLOS IX Proceedings of the ninth international conference on Architectural support for programming languages and operating systems
Region-based memory management in cyclone
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Effective C++ CD
Advanced Windows: The Developer's Guide to the WIN32 API for Windows NT 3.5 and Windows 95
Advanced Windows: The Developer's Guide to the WIN32 API for Windows NT 3.5 and Windows 95
Writing Apache Modules with PERL and C
Writing Apache Modules with PERL and C
A Retargetable C Compiler: Design and Implementation
A Retargetable C Compiler: Design and Implementation
The Real-Time Specification for Java
The Real-Time Specification for Java
Dynamic Storage Allocation: A Survey and Critical Review
IWMM '95 Proceedings of the International Workshop on Memory Management
An Implementation of Scoped Memory for Real-Time Java
EMSOFT '01 Proceedings of the First International Workshop on Embedded Software
Improving Cache Behavior of Dynamically Allocated Data Structures
PACT '98 Proceedings of the 1998 International Conference on Parallel Architectures and Compilation Techniques
Improving server software support for simultaneous multithreaded processors
Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming
Myths and realities: the performance impact of garbage collection
Proceedings of the joint international conference on Measurement and modeling of computer systems
Automatic pool allocation: improving performance by controlling data structure layout in the heap
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Quantifying the performance of garbage collection vs. explicit memory management
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Gated memory control for memory monitoring, leak detection and garbage collection
Proceedings of the 2005 workshop on Memory system performance
A locality-improving dynamic memory allocator
Proceedings of the 2005 workshop on Memory system performance
Scalable locality-conscious multithreaded memory allocation
Proceedings of the 5th international symposium on Memory management
Visualising dynamic memory allocators
Proceedings of the 5th international symposium on Memory management
SAFECode: enforcing alias analysis for weakly typed languages
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Free-Me: a static analysis for automatic individual object reclamation
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Compressible memory data structures for event-based trace analysis
Future Generation Computer Systems
Safe manual memory management in cyclone
Science of Computer Programming - Special issue on five perspectives on modern memory management: Systems, hardware and theory
Bell: bit-encoding online memory leak detection
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
Sum-of-squares heuristics for bin packing and memory allocation
Journal of Experimental Algorithmics (JEA)
Feasibility of decoupling memory management from the execution pipeline
Journal of Systems Architecture: the EUROMICRO Journal
Journal of Systems and Software
Samurai: protecting critical data in unsafe languages
Proceedings of the 3rd ACM SIGOPS/EuroSys European Conference on Computer Systems 2008
Conditional correlation analysis for safe region-based memory management
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Memory management for self-adjusting computation
Proceedings of the 7th international symposium on Memory management
Implementation of a constant-time dynamic storage allocator
Software—Practice & Experience
A constant-time dynamic storage allocator for real-time systems
Real-Time Systems
Memory Allocation Tracing with VampirTrace
ICCS '07 Proceedings of the 7th international conference on Computational Science, Part II
Two memory allocators that use hints to improve locality
Proceedings of the 2009 international symposium on Memory management
GC assertions: using the garbage collector to check heap properties
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
A study of memory management for web-based applications on multicore processors
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Efficiently and precisely locating memory leaks and bloat
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Memory management thread for heap allocation intensive sequential applications
Proceedings of the 10th workshop on MEmory performance: DEaling with Applications, systems and architecture
Compressible memory data structures for event-based trace analysis
Future Generation Computer Systems
Custom memory allocation for free
LCPC'06 Proceedings of the 19th international conference on Languages and compilers for parallel computing
Memory leak analysis of mission-critical middleware
Journal of Systems and Software
KAL: kernel-assisted non-invasive memory leak tolerance with a general-purpose memory allocator
Software—Practice & Experience
Fast and compact hash tables for integer keys
ACSC '09 Proceedings of the Thirty-Second Australasian Conference on Computer Science - Volume 91
Engineering scalable, cache and space efficient tries for strings
The VLDB Journal — The International Journal on Very Large Data Bases
Redesigning the string hash table, burst trie, and BST to exploit cache
Journal of Experimental Algorithmics (JEA)
Cling: A memory allocator to mitigate dangling pointers
USENIX Security'10 Proceedings of the 19th USENIX conference on Security
Efficient protection against heap-based buffer overflows without resorting to magic
ICICS'06 Proceedings of the 8th international conference on Information and Communications Security
Optimizing c multithreaded memory management using thread-local storage
CC'05 Proceedings of the 14th international conference on Compiler Construction
Memory usage verification for OO programs
SAS'05 Proceedings of the 12th international conference on Static Analysis
A comparative analysis of performance improvement schemes for cache memories
Computers and Electrical Engineering
Development of TRIP: fast sparse multivariate polynomial multiplication using burst tries
ICCS'06 Proceedings of the 6th international conference on Computational Science - Volume Part II
Type-Based amortised heap-space analysis
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Towards region-based memory management for Go
Proceedings of the 2012 ACM SIGPLAN Workshop on Memory Systems Performance and Correctness
The myrmics memory allocator: hierarchical,message-passing allocation for global address spaces
Proceedings of the 2012 international symposium on Memory Management
Quantifying the impact of dynamic memory managers into memory-intensive applications
Proceedings of the 2011 Summer Computer Simulation Conference
Enhanced operating system security through efficient and fine-grained address space randomization
Security'12 Proceedings of the 21st USENIX conference on Security symposium
Legion: expressing locality and independence with logical regions
SC '12 Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis
Improving Memory Management Security for C and C++
International Journal of Secure Software Engineering
GHUMVEE: efficient, effective, and flexible replication
FPS'12 Proceedings of the 5th international conference on Foundations and Practice of Security
A low overhead method for recovering unused memory inside regions
Proceedings of the ACM SIGPLAN Workshop on Memory Systems Performance and Correctness
Revisiting memory management on virtualized environments
ACM Transactions on Architecture and Code Optimization (TACO)
Back to the future: fault-tolerant live update with time-traveling state transfer
LISA'13 Proceedings of the 27th international conference on Large Installation System Administration
Towards detecting software performance anti-patterns using classification techniques
ACM SIGSOFT Software Engineering Notes
Hi-index | 0.00 |
Programmers hoping to achieve performance improvements often use custom memory allocators. This in-depth study examines eight applications that use custom allocators. Surprisingly, for six of these applications, a state-of-the-art general-purpose allocator (the Lea allocator) performs as well as or better than the custom allocators. The two exceptions use regions, which deliver higher performance (improvements of up to 44%). Regions also reduce programmer burden and eliminate a source of memory leaks. However, we show that the inability of programmers to free individual objects within regions can lead to a substantial increase in memory consumption. Worse, this limitation precludes the use of regions for common programming idioms, reducing their usefulness.We present a generalization of general-purpose and region-based allocators that we call reaps. Reaps are a combination of regions and heaps, providing a full range of region semantics with the addition of individual object deletion. We show that our implementation of reaps provides high performance, outperforming other allocators with region-like semantics. We then use a case study to demonstrate the space advantages and software engineering benefits of reaps in practice. Our results indicate that programmers needing fast regions should use reaps, and that most programmers considering custom allocators should instead use the Lea allocator.