Heap Reference Analysis for Functional Programs
Amey Karkare, Amitabha Sanyal, Uday Khedker

TL;DR
This paper introduces static analyses for functional programs that identify and nullify unreachable references to improve garbage collection efficiency, reducing memory overhead and speeding up collection processes.
Contribution
It presents a novel sequence of static analyses for functional programs that achieve context-sensitive reference analysis without multiple function re-analyses.
Findings
More garbage is collected due to nullification of unreachable references.
Garbage collection becomes faster for collectors that scavenge live objects.
The method improves memory management efficiency in functional programming languages.
Abstract
Current garbage collectors leave a lot of garbage uncollected because they conservatively approximate liveness by reachability from program variables. In this paper, we describe a sequence of static analyses that takes as input a program written in a first-order, eager functional programming language, and finds at each program point the references to objects that are guaranteed not to be used in the future. Such references are made null by a transformation pass. If this makes the object unreachable, it can be collected by the garbage collector. This causes more garbage to be collected, resulting in fewer collections. Additionally, for those garbage collectors which scavenge live objects, it makes each collection faster. The interesting aspects of our method are both in the identification of the analyses required to solve the problem and the way they are carried out. We identify three…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Formal Methods in Verification · Distributed systems and fault tolerance
