{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,16]],"date-time":"2026-07-16T11:07:28Z","timestamp":1784200048757,"version":"3.55.0"},"reference-count":52,"publisher":"Association for Computing Machinery (ACM)","issue":"PLDI","funder":[{"DOI":"10.13039\/100008398","name":"Villum Fonden","doi-asserted-by":"publisher","award":["29518"],"award-info":[{"award-number":["29518"]}],"id":[{"id":"10.13039\/100008398","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100000781","name":"European Research Council","doi-asserted-by":"publisher","award":["101124225"],"award-info":[{"award-number":["101124225"]}],"id":[{"id":"10.13039\/501100000781","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2025,6,10]]},"abstract":"<jats:p>\n                    Actors are lightweight reactive processes that communicate by asynchronous message-passing. Actors address common problems like concurrency control and fault tolerance, but resource management remains challenging: in all four of the most popular actor frameworks (Pekko, Akka, Erlang, and Elixir) programmers must explicitly kill actors to free up resources. To simplify resource management, researchers have devised\n                    <jats:italic toggle=\"yes\">actor garbage collectors (actor GCs)<\/jats:italic>\n                    that monitor the application and detect when actors are safe to kill. However, existing actor GCs are impractical for distributed systems where the network is unreliable and nodes can fail. The simplest actor GCs do not collect cyclic garbage, whereas more sophisticated actor GCs are not\n                    <jats:italic toggle=\"yes\">fault-recovering<\/jats:italic>\n                    : dropped messages and crashed nodes can cause actors to become garbage that never gets collected.\n                  <\/jats:p>\n                  <jats:p>\n                    We present Conflict-free Replicated Garbage Collection (CRGC): the first fault-recovering cyclic actor GC. In CRGC, actors and nodes record information locally and broadcast updates to the garbage collectors running on each node. CRGC does not require locks, explicit memory barriers, or any assumptions about message delivery order, except for reliable FIFO channels from actors to their local garbage collector. Moreover, CRGC is simple: we concisely present its operational semantics, which has been formalized in TLA\n                    <jats:sup>+<\/jats:sup>\n                    , and prove both soundness (non-garbage actors are never killed) and completeness (all garbage actors are eventually killed, under reasonable assumptions). We also present a preliminary implementation in Apache Pekko and measure its performance using two actor benchmark suites. Our results show the performance overhead of CRGC is competitive with simpler approaches like weighted reference counting, while also being much more powerful.\n                  <\/jats:p>","DOI":"10.1145\/3729288","type":"journal-article","created":{"date-parts":[[2025,6,13]],"date-time":"2025-06-13T16:02:27Z","timestamp":1749830547000},"page":"945-969","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["CRGC: Fault-Recovering Actor Garbage Collection in Pekko"],"prefix":"10.1145","volume":"9","author":[{"ORCID":"https:\/\/orcid.org\/0009-0004-8712-7895","authenticated-orcid":false,"given":"Dan","family":"Plyukhin","sequence":"first","affiliation":[{"name":"University of Southern Denmark, Odense, Denmark"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-0580-4206","authenticated-orcid":false,"given":"Gul","family":"Agha","sequence":"additional","affiliation":[{"name":"University of Illinois at Urbana-Champaign, Urbana, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4666-901X","authenticated-orcid":false,"given":"Fabrizio","family":"Montesi","sequence":"additional","affiliation":[{"name":"University of Southern Denmark, Odense, Denmark"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2025,6,13]]},"reference":[{"key":"e_1_3_2_2_2","volume-title":"ACTORS - A Model of Concurrent Computation in Distributed Systems","author":"Agha Gul","year":"1990","unstructured":"Gul Agha. 1990. ACTORS - A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge, MA."},{"key":"e_1_3_2_3_2","doi-asserted-by":"publisher","DOI":"10.1145\/83880.84528"},{"key":"e_1_3_2_4_2","unstructured":"Apache Software Foundation. 2025. Apache Pekko. https:\/\/pekko.apache.org\/."},{"key":"e_1_3_2_5_2","volume-title":"Making Reliable Distributed Systems in the Presence of Software Errors. Ph.D. Dissertation","author":"Armstrong Joe","year":"2003","unstructured":"Joe Armstrong. 2003. Making Reliable Distributed Systems in the Presence of Software Errors. Ph.D. Dissertation. Royal Institute of Technology, Stockholm, Sweden."},{"key":"e_1_3_2_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/3428282"},{"key":"e_1_3_2_7_2","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-17945-3_10"},{"key":"e_1_3_2_8_2","first-page":"94301","volume-title":"Distributed Garbage Collection for Network Objects. Technical Report 116","author":"Birrell A","year":"1993","unstructured":"A Birrell, D Evers, G Nelson, S Owicki, and G Wobber. 1993. Distributed Garbage Collection for Network Objects. Technical Report 116. Digital Systems Research Center, 130 Lytton Avenue, Palo Alto, CA 94301."},{"key":"e_1_3_2_9_2","volume-title":"A String of Ponies: Transparent Distributed Programming with Actors. Master\u2019s thesis","author":"Blessing Sebastian","year":"2013","unstructured":"Sebastian Blessing. 2013. A String of Ponies: Transparent Distributed Programming with Actors. Master\u2019s thesis. Imperial College, London, United Kingdom."},{"key":"e_1_3_2_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/3358499.3361224"},{"key":"e_1_3_2_11_2","doi-asserted-by":"publisher","DOI":"10.1145\/2038916.2038932"},{"key":"e_1_3_2_12_2","doi-asserted-by":"publisher","DOI":"10.1145\/226643.226647"},{"key":"e_1_3_2_13_2","doi-asserted-by":"publisher","DOI":"10.1145\/214451.214456"},{"key":"e_1_3_2_14_2","doi-asserted-by":"publisher","DOI":"10.1145\/2509136.2509557"},{"key":"e_1_3_2_15_2","doi-asserted-by":"publisher","DOI":"10.1145\/3133896"},{"key":"e_1_3_2_16_2","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-61769-8_10"},{"key":"e_1_3_2_17_2","unstructured":"Hadoop S3A 2025. S3A Committers: Architecture and Implementation. https:\/\/hadoop.apache.org\/docs\/r3.1.0\/hadoop-aws\/tools\/hadoop-aws\/committer_architecture.html."},{"key":"e_1_3_2_18_2","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2984042"},{"key":"e_1_3_2_19_2","doi-asserted-by":"publisher","DOI":"10.1109\/RELDIS.2004.1353004"},{"key":"e_1_3_2_20_2","doi-asserted-by":"publisher","DOI":"10.1145\/2687357.2687368"},{"key":"e_1_3_2_21_2","doi-asserted-by":"publisher","DOI":"10.1201\/9781315388021"},{"key":"e_1_3_2_22_2","doi-asserted-by":"publisher","DOI":"10.1109\/71.372788"},{"key":"e_1_3_2_23_2","doi-asserted-by":"publisher","DOI":"10.1145\/97945.97961"},{"key":"e_1_3_2_24_2","doi-asserted-by":"publisher","DOI":"10.1109\/SUPERC.1994.344268"},{"key":"e_1_3_2_25_2","doi-asserted-by":"publisher","DOI":"10.1145\/1596655.1596658"},{"key":"e_1_3_2_26_2","doi-asserted-by":"publisher","DOI":"10.1145\/177492.177726"},{"key":"e_1_3_2_27_2","doi-asserted-by":"publisher","DOI":"10.1145\/2872362.2872374"},{"key":"e_1_3_2_28_2","unstructured":"Lightbend. 2025. Akka. https:\/\/akka.io\/."},{"key":"e_1_3_2_29_2","unstructured":"Lightbend. 2025. Akka Documentation: Cluster Membership Service. https:\/\/doc.akka.io\/docs\/akka\/2.10.2\/typed\/cluster-membership.html."},{"key":"e_1_3_2_30_2","unstructured":"Lightbend. 2025. Akka Documentation: Cluster Sharding. https:\/\/doc.akka.io\/docs\/akka\/2.10.2\/typed\/cluster-sharding.html."},{"key":"e_1_3_2_31_2","unstructured":"Lightbend. 2025. Akka Documentation: Message Delivery Reliability. https:\/\/doc.akka.io\/docs\/akka\/2.10.2\/general\/message-delivery-reliability.html."},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.1007\/BF01782776"},{"key":"e_1_3_2_33_2","doi-asserted-by":"publisher","DOI":"10.1145\/1108970.1108976"},{"key":"e_1_3_2_34_2","unstructured":"MR-4099 2012. [MAPREDUCE-4099] ApplicationMaster May Fail to Remove Staging Directory - ASF JIRA. https:\/\/issues.apache.org\/jira\/browse\/MAPREDUCE-4099."},{"key":"e_1_3_2_35_2","unstructured":"Orleans project authors. 2024. Activation Garbage Collection. https:\/\/github.com\/dotnet\/docs\/blob\/0ba574212ac88fe70b590547384eae7a158d4527\/docs\/orleans\/host\/configuration-guide\/activation-collection.md."},{"key":"e_1_3_2_36_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-25209-3_11"},{"key":"e_1_3_2_37_2","doi-asserted-by":"publisher","DOI":"10.1145\/3281366.3281368"},{"key":"e_1_3_2_38_2","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.CONCUR.2020.11"},{"key":"e_1_3_2_39_2","doi-asserted-by":"publisher","DOI":"10.46298\/lmcs-18(1:39)2022"},{"key":"e_1_3_2_40_2","doi-asserted-by":"publisher","unstructured":"Dan Plyukhin Gul Agha and Fabrizio Montesi. 2025. CRGC: Fault-Recovering Actor Garbage Collection in Pekko (Artifact). https:\/\/doi.org\/10.5281\/zenodo.15049131 10.5281\/zenodo.15049131.","DOI":"10.5281\/zenodo.15049131"},{"key":"e_1_3_2_41_2","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-58184-7_129"},{"key":"e_1_3_2_42_2","doi-asserted-by":"publisher","DOI":"10.1145\/112600.112628"},{"key":"e_1_3_2_43_2","doi-asserted-by":"crossref","unstructured":"Marc Shapiro Peter Dickman and David Plainfosse. 1993. SSP Chains : Robust Distributed References Supporting Acyclic Garbage Collection.","DOI":"10.1145\/135419.135448"},{"key":"e_1_3_2_44_2","doi-asserted-by":"publisher","DOI":"10.1145\/1292520.1292528"},{"key":"e_1_3_2_45_2","volume-title":"Distributed Garbage Collection of Active Objects: A Transformation and Its Applications to Java Programming. Master\u2019s thesis","author":"Vardhan Abhay","year":"1998","unstructured":"Abhay Vardhan. 1998. Distributed Garbage Collection of Active Objects: A Transformation and Its Applications to Java Programming. Master\u2019s thesis. University of Illinois at Urbana-Champaign, Urbana, IL."},{"key":"e_1_3_2_46_2","doi-asserted-by":"publisher","DOI":"10.1145\/773039.512443"},{"key":"e_1_3_2_47_2","doi-asserted-by":"publisher","DOI":"10.1145\/583960.583964"},{"key":"e_1_3_2_48_2","doi-asserted-by":"publisher","DOI":"10.1145\/2523616.2523633"},{"key":"e_1_3_2_49_2","volume-title":"Hierarchical Garbage Collection in Scalable Distributed Systems. Master\u2019s thesis","author":"Venkatasubramanian Nalini","year":"1992","unstructured":"Nalini Venkatasubramanian. 1992. Hierarchical Garbage Collection in Scalable Distributed Systems. Master\u2019s thesis. University of Illinois at Urbana-Champaign."},{"key":"e_1_3_2_50_2","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0017187"},{"key":"e_1_3_2_51_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-13067-0_28"},{"key":"e_1_3_2_52_2","doi-asserted-by":"publisher","DOI":"10.1007\/11745693_36"},{"key":"e_1_3_2_53_2","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-17945-3_25"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3729288","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,7,16]],"date-time":"2026-07-16T10:07:43Z","timestamp":1784196463000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3729288"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,6,10]]},"references-count":52,"journal-issue":{"issue":"PLDI","published-print":{"date-parts":[[2025,6,10]]}},"alternative-id":["10.1145\/3729288"],"URL":"https:\/\/doi.org\/10.1145\/3729288","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,6,10]]},"assertion":[{"value":"2024-11-15","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-03-06","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-06-13","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}