Project Snowflake: Non-blocking Safe Manual Memory Management for .NET
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.
Fri 27 Oct
|10:30 - 10:52|
Matthew ParkinsonMicrosoft Research, UK, Dimitrios VytiniotisMicrosoft Research, Cambridge, Kapil VaswaniMicrosoft Research, Manuel CostaMicrosoft Research, Pantazis DeligiannisMicrosoft Research, Dylan McDermottUniversity of Cambridge, Jonathan BalkindPrinceton, USA, Aaron BlanksteinPrinceton, USADOI
|10:52 - 11:15|
Kiwan MaengCarnegie Mellon University, USA, Alexei ColinCarnegie Mellon University, Brandon LuciaCarnegie Mellon UniversityDOI
|11:15 - 11:37|
Ennan ZhaiYale University, USA, Ruzica PiskacYale University, Ronghui GuColumbia University, USA, Xun LaoYale University, USA, Xi WangYale University, USADOI
|11:37 - 12:00|
Ted KaminskiUniversity of Minnesota, Lucas KramerUniversity of Minnesota, Travis CarlsonUniversity of Minnesota, USA, Eric Van WykUniversity of Minnesota, USADOI Pre-print