{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,2,17]],"date-time":"2024-02-17T16:10:10Z","timestamp":1708186210694},"reference-count":25,"publisher":"Cambridge University Press (CUP)","issue":"5","license":[{"start":{"date-parts":[[2007,9,1]],"date-time":"2007-09-01T00:00:00Z","timestamp":1188604800000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Theory and Practice of Logic Programming"],"published-print":{"date-parts":[[2007,9]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>The design and implementation of an incremental copying heap garbage collector for WAM-based Prolog systems is presented. Its heap layout consists of a number of equal-sized blocks. Other changes to the standard WAM allow these blocks to be garbage collected independently. The independent collection of heap blocks forms the basis of an incremental collecting algorithm which employs copying without marking (contrary to the more frequently used mark&amp;copy or mark&amp;slide algorithms in the context of Prolog). Compared to standard semi-space copying collectors, this approach to heap garbage collection lowers in many cases the memory usage and reduces pause times. The algorithm also allows for a wide variety of garbage collection policies including generational ones. The algorithm is implemented and evaluated in the context of hProlog.<\/jats:p>","DOI":"10.1017\/s147106840600278x","type":"journal-article","created":{"date-parts":[[2007,8,24]],"date-time":"2007-08-24T10:55:18Z","timestamp":1187952918000},"page":"505-536","source":"Crossref","is-referenced-by-count":0,"title":["Incremental copying garbage collection for WAM-based Prolog systems"],"prefix":"10.1017","volume":"7","author":[{"given":"RUBEN","family":"VANDEGINSTE","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"BART","family":"DEMOEN","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"56","published-online":{"date-parts":[[2007,9,1]]},"reference":[{"key":"S147106840600278X_ref14","unstructured":"Jones R. and Lins R. 1996. Garbage Collection: Algorithms for automatic memory management. John Wiley. See also http:\/\/www.cs.ukc.ac.uk\/people\/staff\/rej\/gcbook\/gcbook.html."},{"key":"S147106840600278X_ref25","volume-title":"Proc. Int. Workshop on Memory Management","author":"Wilson","year":"1992"},{"key":"S147106840600278X_ref24","unstructured":"Warren D. H. D. 1983. An Abstract Prolog Instruction Set. Tech. Rep. 309, SRI."},{"key":"S147106840600278X_ref2","doi-asserted-by":"publisher","DOI":"10.1145\/62959.62968"},{"key":"S147106840600278X_ref1","unstructured":"A\u00eft-Kaci H. 1990. The WAM: a (real) tutorial. Tech. Rep. 5, DEC Paris Research Report."},{"key":"S147106840600278X_ref10","first-page":"174","volume-title":"Proceedings of the International Conference on Principles and Practice of Constraint Programming","author":"Demoen","year":"1999"},{"key":"S147106840600278X_ref13","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0017203"},{"key":"S147106840600278X_ref5","volume-title":"Proceedings of SIGPLAN 2002 Conference on Programming Languages Design and Implementation, PLDI'02, Berlin, June, 2002","author":"Blackburn","year":"2002"},{"key":"S147106840600278X_ref3","first-page":"82","volume-title":"Proceedings of IWMM'92: International Workshop on Memory Management","author":"Bekkers","year":"1992"},{"key":"S147106840600278X_ref17","unstructured":"Nethercote N. 2004. Dynamic binary analysis and instrumentation. Ph.D. thesis, Computer Laboratory, University of Cambridge, United Kingdom."},{"key":"S147106840600278X_ref11","first-page":"1240","volume-title":"Computational Logic \u2013 CL2000, First International Conference, London, UK, July 2000, Proceedings","author":"Demoen","year":"2000"},{"key":"S147106840600278X_ref15","first-page":"245","volume-title":"Proceedings of the 2nd ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP'00)","author":"Li","year":"2000"},{"key":"S147106840600278X_ref6","first-page":"175","volume-title":"Proceedings of the third international symposium on Memory management","author":"Blackburn","year":"2002"},{"key":"S147106840600278X_ref16","unstructured":"Mehl M. 1999. The oz virtual machine \u2013 records, transients, and deep guards. Ph.D. thesis, Technische Fakult\u00e4t der Universit\u00e4t des Saarlandes."},{"key":"S147106840600278X_ref20","unstructured":"Quintus. 1989. Personal Communication from Richard O'Keefe and Mats Carlsson."},{"key":"S147106840600278X_ref7","first-page":"259","volume-title":"Implementations of Prolog","author":"Bruynooghe","year":"1984"},{"key":"S147106840600278X_ref19","first-page":"185","volume-title":"Proc. 1985 Logic Programming Symposium","author":"Pittomvils","year":"1985"},{"key":"S147106840600278X_ref18","volume-title":"Proceedings of the Third Workshop on Runtime Verification (RV'03)","author":"Nethercote","year":"2003"},{"key":"S147106840600278X_ref8","first-page":"11","volume-title":"Proceedings of the 17th International Conference on Logic Programming, ICLP'2001","author":"Castro","year":"2001"},{"key":"S147106840600278X_ref21","unstructured":"Scheidhauer R. 1998. Design, implementierung und evaluierung einer virtuellen maschine f\u00fcr Oz. PhD thesis, Universit\u00e4t des Saarlandes, Fachbereich Informatik, Saarbr\u00fccken, Germany."},{"key":"S147106840600278X_ref22","unstructured":"Seward J. , Nethercote N. , Fitzhardinge J. Valgrind. http:\/\/www.valgrind.org."},{"key":"S147106840600278X_ref23","first-page":"922","volume-title":"Proceedings of the International Conference on Fifth Generation Computer Systems (FGCS'88)","author":"Touati","year":"1988"},{"key":"S147106840600278X_ref9","doi-asserted-by":"publisher","DOI":"10.1145\/331119.331210"},{"key":"S147106840600278X_ref12","doi-asserted-by":"crossref","first-page":"194","DOI":"10.1007\/3-540-45619-8_14","volume-title":"Proceedings of ICLP2002 \u2013 International Conference on Logic Programming","author":"Demoen","year":"2002"},{"key":"S147106840600278X_ref4","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-58402-1_8"}],"container-title":["Theory and Practice of Logic Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S147106840600278X","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,2,17]],"date-time":"2024-02-17T15:40:15Z","timestamp":1708184415000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S147106840600278X\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2007,9]]},"references-count":25,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2007,9]]}},"alternative-id":["S147106840600278X"],"URL":"https:\/\/doi.org\/10.1017\/s147106840600278x","relation":{},"ISSN":["1471-0684","1475-3081"],"issn-type":[{"value":"1471-0684","type":"print"},{"value":"1475-3081","type":"electronic"}],"subject":[],"published":{"date-parts":[[2007,9]]}}}