Abstract | ||
---|---|---|
Safe programming languages are readily available, but many applications continue to be written in unsafe languages because of efficiency. As a consequence, many applications continue to have exploitable memory safety bugs. Since garbage collection is a major source of inefficiency in the implementation of safe languages, replacing it with safe manual memory management would be an important step towards solving this problem. Previous approaches to safe manual memory management use programming models based on regions, unique pointers, borrowing of references, and ownership types. We propose a much simpler programming model that does not require any of these concepts. Starting from the design of an imperative type safe language (like Java or C#), we just add a delete operator to free memory explicitly and an exception which is thrown if the program dereferences a pointer to freed memory. We propose an efficient implementation of this programming model that guarantees type safety. Experimental results from our implementation based on the C# native compiler show that this design achieves up to 3x reduction in peak working set and run time. |
Year | DOI | Venue |
---|---|---|
2017 | 10.1145/3062341.3062376 | PLDI |
Keywords | Field | DocType |
memory management,type safety,managed languages,garbage collection | Pointer (computer programming),Memory safety,Programming language,Programming paradigm,Computer science,Manual memory management,Real-time computing,Memory management,Garbage collection,Memory leak,Type safety | Conference |
Volume | Issue | ISSN |
52 | 6 | 0362-1340 |
Citations | PageRank | References |
4 | 0.39 | 26 |
Authors | ||
6 |
Name | Order | Citations | PageRank |
---|---|---|---|
Piyus Kedia | 1 | 4 | 0.39 |
Manuel Costa | 2 | 1589 | 88.62 |
Matthew Parkinson | 3 | 129 | 5.89 |
Kapil Vaswani | 4 | 685 | 30.29 |
Dimitrios Vytiniotis | 5 | 660 | 36.89 |
Aaron Blankstein | 6 | 108 | 5.52 |