Title
Project snowflake: non-blocking safe manual memory management in .NET
Abstract
Garbage collection greatly improves programmer productivity and ensures memory safety. Manual memory management on the other hand often delivers better performance but is typically unsafe and can lead to system crashes or security vulnerabilities. We propose integrating safe manual memory management with garbage collection in the .NET runtime to get the best of both worlds. In our design, programmers can choose between allocating objects in the garbage collected heap or the manual heap. All existing applications run unmodified, and without any performance degradation, using the garbage collected heap. Our programming model for manual memory management is flexible: although objects in the manual heap can have a single owning pointer, we allow deallocation at any program point and concurrent sharing of these objects amongst all the threads in the program. Experimental results from our .NET CoreCLR implementation on real-world applications show substantial performance gains especially in multithreaded scenarios: up to 3x savings in peak working sets and 2x improvements in runtime.
Year
DOI
Venue
2017
10.1145/3141879
Proceedings of the ACM on Programming Languages
Keywords
Field
DocType
.NET,GC,Memory Management,Ownership
Pointer (computer programming),Garbage,Memory safety,Programming paradigm,Computer science,Manual memory management,Heap (data structure),Memory management,Garbage collection,Database
Journal
Volume
Issue
ISSN
1
OOPSLA
2475-1421
Citations 
PageRank 
References 
3
0.39
35
Authors
8
Name
Order
Citations
PageRank
Matthew J. Parkinson126715.09
Dimitrios Vytiniotis266036.89
Kapil Vaswani368530.29
Manuel Costa4158988.62
Pantazis Deligiannis5464.29
Dylan McDermott630.39
Aaron Blankstein71085.52
Jonathan Balkind8614.43