IP Library › Granted Patent US 12,190,112
Granted Patent B2
US 12,190,112 · App. 17/582,430 · Granted Jan 7, 2025

Cooperative garbage collection barrier elision

Inventors: Erik Österlund (Västerhaninge, SE); Nils Erik Eliasson (Johanneshov, SE)
Assignee: Oracle International Corporation
G06F9/30043G06F9/30047G06F9/3009G06F9/321G06F9/3834G06F9/45516G06F9/461G06F9/522G06F12/0253
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,190,112
App. No.
17/582,430
Granted
Jan 7, 2025
Kind
B2
Abstract

Techniques are disclosed for eliding load and store barriers while maintaining garbage collection invariants. Embodiments described herein include techniques for identifying an instruction, such as a safepoint poll, that checks whether to pause a thread between execution of a dominant and dominated access to the same data field. If a poll instruction is identified between the two data accesses, then a pointer for the data field may be recorded in an entry associated with the poll instruction. When the thread is paused to execute a garbage collection operation, the recorded information may be used to update values associated with the data field in memory such that the dominated access may be executed without any load or store barriers.

Claims (42)

1. A method comprising:

identifying an instruction that checks whether to pause a thread between executing a first access to a data field and a second access to the data field, wherein the second access to the data field is subsequent to and dominated by the first access to the data field within at least one control flow path;

responsive to identifying the instruction that checks whether to pause the thread between the first access to the data field and the second access to the data field, recording data that associates a pointer for the data field with the instruction that checks whether to pause the thread between the first access to the data field and the second access to the data field;

pausing execution of the thread between the first access to the data field and the second access to the data field;

performing at least one garbage collection operation while the thread of execution between the first access to the data field and the second access to the data field is paused, wherein the pointer for the data field is identified based on the data that associates the pointer for the data field with the instruction that checks whether to pause the thread between the first access to the data field and the second access to the data field;

updating at least one value associated with the data field in memory based at least in part on the pointer for the data field such that the second access that is subsequent to and dominated by the first access to the data field can elide garbage collection barriers; and

after updating the at least one value associated with the data field in memory based at least in part on the pointer for the data field, resuming execution of the thread, wherein the thread executes the second access to the data field without a store barrier or a load barrier.

2. The method of claim 1 , wherein recording the pointer for the data field comprises mapping a program counter for the instruction to a base pointer and an offset for the data field.

3. The method of claim 1 , further comprising: identifying the pointer by traversing a set of use-define chains from the second access to the instruction for checking whether to pause the thread; and determining a base pointer and offset for the field based at least in part on a store operation or a write operation in the set of use-define chains.

4. The method of claim 1 , further comprising: executing the instruction to check whether to pause the thread between executing the first access to a data field and the second access to the data field; determining to proceed without pausing the thread; wherein the thread executes the second access to the data field without a store barrier or a load barrier and without updating the at least one value associated with the data field in memory.

5. The method of claim 1 , wherein checking whether to pause the thread comprises determining whether a garbage collection process has requested a safepoint.

6. The method of claim 1 , wherein updating at least one value associated with the data field in memory based at least in part on the pointer for the data field comprises:

identifying a program counter associated with the instruction in a stack frame during a scanning operation of a stack; and identifying a base pointer and offset associated with the data field that is mapped to the program counter; and restoring a reference that was changed by said at least one garbage collection operation using the base pointer and the offset.

7. The method of claim 1 , wherein updating at least one value associated with the data field in memory based at least in part on the pointer for the data field is performed by a garbage collection process.

8. One or more non-transitory computer-readable media storing instructions which, when executed by one or more hardware processors, cause:

identifying an instruction that checks whether to pause a thread between executing a first access to a data field and a second access to the data field, wherein the second access to the data field is subsequent to and dominated by the first access to the data field within at least one control flow path;

responsive to identifying the instruction that checks whether to pause the thread between the first access to the data field and the second access to the data field, recording data that associates a pointer for the data field with the instruction that checks whether to pause the thread between the first access to the data field and the second access to the data field;

pausing execution of the thread between the first access to the data field and the second access to the data field;

performing at least one garbage collection operation while the thread of execution between the first access to the data field and the second access to the data field is paused, wherein the pointer for the data field is identified based on the data that associates the pointer for the data field with the instruction that checks whether to pause the thread between the first access to the data field and the second access to the data field;

updating at least one value associated with the data field in memory based at least in part on the pointer for the data field such that the second access that is subsequent to and dominated by the first access to the data field can elide garbage collection barriers; and

after updating the at least one value associated with the data field in memory based at least in part on the pointer for the data field, resuming execution of the thread, wherein the thread executes the second access to the data field without a store barrier or a load barrier.

9. The media of claim 8 , wherein recording the pointer for the data field comprises mapping a program counter for the instruction to a base pointer and an offset for the data field.

10. The media of claim 8 , wherein the instructions further cause: identifying the pointer by traversing a set of use-define chains from the second access to the instruction for checking whether to pause the thread; and determining a base pointer and offset for the field based at least in part on a store operation or a write operation in the set of use-define chains.

11. The media of claim 8 , wherein the instructions further cause: executing the instruction to check whether to pause the thread between executing the first access to a data field and the second access to the data field; determining to proceed without pausing the thread; wherein the thread executes the second access to the data field without a store barrier or a load barrier and without updating the at least one value associated with the data field in memory.

12. The media of claim 8 , wherein checking whether to pause the thread comprises determining whether a garbage collection process has requested a safepoint.

13. The media of claim 8 , wherein updating at least one value associated with the data field in memory based at least in part on the pointer for the data field comprises: identifying a program counter associated with the instruction in a stack frame during a scanning operation of a stack; and identifying a base pointer and offset associated with the data field that is mapped to the program counter; and restoring a reference that was changed by said at least one garbage collection operation using the base pointer and the offset.

14. The media of claim 8 , wherein updating at least one value associated with the data field in memory based at least in part on the pointer for the data field is performed by a garbage collection process.

15. A system comprising:

one or more hardware processors;

one or more non-transitory computer-readable media storing instructions which, when executed by the one or more hardware processors, cause:

identifying an instruction that checks whether to pause a thread between executing a first access to a data field and a second access to the data field, wherein the second access to the data field is subsequent to and dominated by the first access to the data field within at least one control flow path;

responsive to identifying the instruction that checks whether to pause the thread between the first access to the data field and the second access to the data field, recording data that associates a pointer for the data field with the instruction that checks whether to pause the thread between the first access to the data field and the second access to the data field;

pausing execution of the thread between the first access to the data field and the second access to the data field;

performing at least one garbage collection operation while the thread of execution between the first access to the data field and the second access to the data field is paused, wherein the pointer for the data field is identified based on the data that associates the pointer for the data field with the instruction that checks whether to pause the thread between the first access to the data field and the second access to the data field;

updating at least one value associated with the data field in memory based at least in part on the pointer for the data field such that the second access that is subsequent to and dominated by the first access to the data field can elide garbage collection barriers; and

after updating the at least one value associated with the data field in memory based at least in part on the pointer for the data field, resuming execution of the thread, wherein the thread executes the second access to the data field without a store barrier or a load barrier.

16. The system of claim 15 , wherein recording the pointer for the data field comprises mapping a program counter for the instruction to a base pointer and an offset for the data field.

17. The system of claim 15 , wherein the instructions further cause:

identifying the pointer by traversing a set of use-define chains from the second access to the instruction for checking whether to pause the thread; and determining a base pointer and offset for the field based at least in part on a store operation or a write operation in the set of use-define chains.

18. The system of claim 15 , wherein the instructions further cause: executing the instruction to check whether to pause the thread between executing the first access to a data field and the second access to the data field; determining to proceed without pausing the thread; wherein the thread executes the second access to the data field without a store barrier or a load barrier and without updating the at least one value associated with the data field in memory.

19. The system of claim 15 , wherein checking whether to pause the thread comprises determining whether a garbage collection process has requested a safepoint.

20. The system of claim 15 , wherein updating at least one value associated with the data field in memory based at least in part on the pointer for the data field comprises: identifying a program counter associated with the instruction in a stack frame during a scanning operation of a stack; and identifying a base pointer and offset associated with the data field that is mapped to the program counter; and restoring a reference that was changed by said at least one garbage collection operation using the base pointer and the offset.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 24, 2022
From: ÖSTERLUND, ERIK; ELIASSON, NILS ERIK
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 058743/0622 →
Continuity (1)
Related Publication 20230236835A1 · Jul 27, 2023
References Cited (232)
US 5765007A · Rahman et al. · 1998 [cited by applicant]
US 5787430A · Doeringer et al. · 1998 [cited by applicant]
US 5842016A · Toutonghi et al. · 1998 [cited by applicant]
US 5873104A · Tremblay et al. · 1999 [cited by applicant]
US 5928357A · Underwood et al. · 1999 [cited by applicant]
US 5933840A · Menon et al. · 1999 [cited by applicant]
US 6052699A · Huelsbergen et al. · 2000 [cited by applicant]
US 6065020A · Dussud · 2000 [cited by applicant]
US 6158024A · Mandal · 2000 [cited by applicant]
US 6226653B1 · Alpern et al. · 2001 [cited by applicant]
US 6304949B1 · Houlsdworth · 2001 [cited by applicant]
US 6324637B1 · Hamilton · 2001 [cited by applicant]
US 6499032B1 · Tikkanen et al. · 2002 [cited by applicant]
US 6567905B2 · Otis · 2003 [cited by applicant]
US 6694346B1 · Aman et al. · 2004 [cited by applicant]
US 6728732B1 · Eatherton et al. · 2004 [cited by applicant]
US 6766513B2 · Charnell et al. · 2004 [cited by applicant]
US 6769004B2 · Barrett · 2004 [cited by applicant]
US 6809792B1 · Tehranchi et al. · 2004 [cited by applicant]
US 6915296B2 · Parson · 2005 [cited by applicant]
US 7072905B2 · Garthwaite · 2006 [cited by applicant]
US 7089272B1 · Garthwaite et al. · 2006 [cited by applicant]
US 7269705B1 · Seidl et al. · 2007 [cited by applicant]
US 7293051B1 · Printezis et al. · 2007 [cited by applicant]
US 7389395B1 · Garthwaite et al. · 2008 [cited by applicant]
US 7404182B1 · Garthwaite · 2008 [cited by examiner]
US 7523081B1 · Engebretsen · 2009 [cited by applicant]
US 7539837B1 · Flood et al. · 2009 [cited by applicant]
US 7546587B2 · Marr et al. · 2009 [cited by applicant]
US 7548940B2 · Bacon et al. · 2009 [cited by applicant]
US 7774389B2 · Stephens et al. · 2010 [cited by applicant]
US 7808929B2 · Wong et al. · 2010 [cited by applicant]
US 7904493B2 · Schmelter et al. · 2011 [cited by applicant]
US 7962707B2 · Kaakani et al. · 2011 [cited by applicant]
US 8051426B2 · Meijer et al. · 2011 [cited by applicant]
US 8261269B2 · Garmark · 2012 [cited by applicant]
US 8495093B2 · Baudel · 2013 [cited by applicant]
US 8688754B1 · Burka et al. · 2014 [cited by applicant]
US 8788778B1 · Boyle · 2014 [cited by applicant]
US 8825719B2 · Steensgaard et al. · 2014 [cited by applicant]
US 8825721B2 · Hunt et al. · 2014 [cited by applicant]
US 8856186B1 · Li et al. · 2014 [cited by applicant]
US 9135169B2 · Kawachiya et al. · 2015 [cited by applicant]
US 9208081B1 · Dice et al. · 2015 [cited by applicant]
US 9323608B2 · Troia · 2016 [cited by applicant]
US 9503435B2 · Mizrahi et al. · 2016 [cited by applicant]
US 9727456B2 · Malwankar et al. · 2017 [cited by applicant]
US 9740716B2 · Wilhelmsson · 2017 [cited by applicant]
US 9971683B1 · Bell et al. · 2018 [cited by applicant]
US 10002074B2 · Flood et al. · 2018 [cited by applicant]
US 10261898B1 · Payer · 2019 [cited by applicant]
US 10664391B2 · Jang · 2020 [cited by applicant]
US 10795812B1 · Duggal et al. · 2020 [cited by applicant]
US 10929288B1 · Moore et al. · 2021 [cited by applicant]
US 10983908B1 · Zou et al. · 2021 [cited by applicant]
US 10996884B2 · Danilov et al. · 2021 [cited by applicant]
US 11366801B1 · Kumar et al. · 2022 [cited by applicant]
US 11507503B1 · Sterlund et al. · 2022 [cited by applicant]
US 11573894B2 · Österlund et al. · 2023 [cited by applicant]
US 20020059520A1 · Murakami et al. · 2002 [cited by applicant]
US 20030005027A1 · Borman et al. · 2003 [cited by applicant]
US 20030188141A1 · Chaudhry et al. · 2003 [cited by applicant]
US 20040186863A1 · Garthwaite · 2004 [cited by examiner]
US 20040187102A1 · Garthwaite · 2004 [cited by applicant]
US 20050066329A1 · Fischer et al. · 2005 [cited by applicant]
US 20050081190A1 · Betancourt et al. · 2005 [cited by applicant]
US 20050102670A1 · Bretl et al. · 2005 [cited by applicant]
US 20050114844A1 · Betancourt et al. · 2005 [cited by applicant]
US 20050149686A1 · Bacon et al. · 2005 [cited by applicant]
US 20050160416A1 · Jamison · 2005 [cited by applicant]
US 20050188164A1 · Ballantyne et al. · 2005 [cited by applicant]
US 20050235006A1 · Adl-Tabatabai et al. · 2005 [cited by applicant]
US 20050267996A1 · O'Connor et al. · 2005 [cited by applicant]
US 20060005171A1 · Ellison · 2006 [cited by applicant]
US 20060026379A1 · Jung · 2006 [cited by applicant]
US 20060143168A1 · Rossmann · 2006 [cited by applicant]
US 20060143395A1 · Zohar et al. · 2006 [cited by applicant]
US 20070016633A1 · Lindholm et al. · 2007 [cited by applicant]
US 20070022149A1 · Bacon et al. · 2007 [cited by applicant]
US 20070162528A1 · Wright et al. · 2007 [cited by applicant]
US 20070234005A1 · Erlingsson et al. · 2007 [cited by applicant]
US 20080034175A1 · Traister et al. · 2008 [cited by applicant]
US 20080086619A1 · Traister et al. · 2008 [cited by applicant]
US 20080140737A1 · Garst et al. · 2008 [cited by applicant]
US 20080162787A1 · Tomlin et al. · 2008 [cited by applicant]
US 20090007075A1 · Edmark et al. · 2009 [cited by applicant]
US 20090037660A1 · Fairhurst · 2009 [cited by applicant]
US 20090119352A1 · Branda et al. · 2009 [cited by applicant]
US 20090132622A1 · Rossmann et al. · 2009 [cited by applicant]
US 20090158288A1 · Fulton et al. · 2009 [cited by applicant]
US 20090307292A1 · Li et al. · 2009 [cited by applicant]
US 20090319720A1 · Stefanus et al. · 2009 [cited by applicant]
US 20090328007A1 · Chen et al. · 2009 [cited by applicant]
US 20100011357A1 · Ramamurthy · 2010 [cited by applicant]
US 20100082710A1 · Kilner et al. · 2010 [cited by applicant]
US 20100114998A1 · Steensgaard et al. · 2010 [cited by applicant]
US 20100254254A1 · Chan et al. · 2010 [cited by applicant]
US 20100287350A1 · Ylonen · 2010 [cited by applicant]
US 20110145637A1 · Gray · 2011 [cited by examiner]
US 20110208792A1 · Printezis et al. · 2011 [cited by applicant]
US 20110286420A1 · Cho et al. · 2011 [cited by applicant]
US 20120203804A1 · Burka et al. · 2012 [cited by applicant]
US 20130054925A1 · Hsia · 2013 [cited by applicant]
US 20130073821A1 · Flynn et al. · 2013 [cited by applicant]
US 20130138703A1 · Daynes et al. · 2013 [cited by applicant]
US 20130227236A1 · Flynn et al. · 2013 [cited by applicant]
US 20130290648A1 · Shao et al. · 2013 [cited by applicant]
US 20130318132A1 · Basu et al. · 2013 [cited by applicant]
US 20130332909A1 · Odaira et al. · 2013 [cited by applicant]
US 20140032922A1 · Spilman · 2014 [cited by applicant]
US 20140033213A1 · Hudson et al. · 2014 [cited by applicant]
US 20140101372A1 · Jung et al. · 2014 [cited by applicant]
US 20140108817A1 · Chen et al. · 2014 [cited by applicant]
US 20140195818A1 · Neumann et al. · 2014 [cited by applicant]
US 20140278447A1 · Unoki et al. · 2014 [cited by applicant]
US 20140310235A1 · Chan et al. · 2014 [cited by applicant]
US 20140359201A1 · Chakrabarti · 2014 [cited by applicant]
US 20150006843A1 · Moser · 2015 [cited by applicant]
US 20150026167A1 · Neels et al. · 2015 [cited by applicant]
US 20150058381A1 · Wilhelmsson · 2015 [cited by applicant]
US 20150081996A1 · Flood · 2015 [cited by applicant]
US 20150100752A1 · Flood · 2015 [cited by applicant]
US 20150227416A1 · Reinart · 2015 [cited by applicant]
US 20150365941A1 · Liu et al. · 2015 [cited by applicant]
US 20150378870A1 · Marron et al. · 2015 [cited by applicant]
US 20160012280A1 · Ito et al. · 2016 [cited by applicant]
US 20160042015A1 · Landau et al. · 2016 [cited by applicant]
US 20160124802A1 · Gabor et al. · 2016 [cited by applicant]
US 20160163381A1 · Lee · 2016 [cited by applicant]
US 20160170649A1 · Ramesh et al. · 2016 [cited by applicant]
US 20160179580A1 · Benedict · 2016 [cited by applicant]
US 20160239413A1 · Stephens et al. · 2016 [cited by applicant]
US 20160283369A1 · Hada · 2016 [cited by applicant]
US 20160350214A1 · Payer et al. · 2016 [cited by applicant]
US 20170006135A1 · Siebel et al. · 2017 [cited by applicant]
US 20170039242A1 · Milton et al. · 2017 [cited by applicant]
US 20170177168A1 · Abudib et al. · 2017 [cited by applicant]
US 20170177471A1 · Frazier et al. · 2017 [cited by applicant]
US 20170262364A1 · Liden et al. · 2017 [cited by applicant]
US 20170344473A1 · Gidra et al. · 2017 [cited by applicant]
US 20180074854A1 · Chan · 2018 [cited by applicant]
US 20180173728A1 · Munakata · 2018 [cited by applicant]
US 20180276120A1 · Vytiniotis et al. · 2018 [cited by applicant]
US 20180335968A1 · Pauley et al. · 2018 [cited by applicant]
US 20180365106A1 · Huang et al. · 2018 [cited by applicant]
US 20190042406A1 · Guniguntala et al. · 2019 [cited by applicant]
US 20190042440A1 · Kumar et al. · 2019 [cited by applicant]
US 20200012600A1 · Konoth et al. · 2020 [cited by applicant]
US 20200012647A1 · Johnson et al. · 2020 [cited by applicant]
US 20200026781A1 · Khot et al. · 2020 [cited by applicant]
US 20200081748A1 · Johnson et al. · 2020 [cited by applicant]
US 20200125364A1 · Erik · 2020 [cited by applicant]
US 20200202127A1 · Chen et al. · 2020 [cited by applicant]
US 20200250084A1 · Stephens et al. · 2020 [cited by applicant]
US 20200310963A1 · Nilsen · 2020 [cited by applicant]
US 20200327052A1 · Nilsen · 2020 [cited by examiner]
US 20200379902A1 · Durham et al. · 2020 [cited by applicant]
US 20210124608A1 · Shveidel et al. · 2021 [cited by applicant]
US 20210278990A1 · Choi · 2021 [cited by applicant]
US 20220058732A1 · Reses · 2022 [cited by applicant]
US 20220138098A1 · Osterlund et al. · 2022 [cited by applicant]
US 20220188432A1 · Turmel et al. · 2022 [cited by applicant]
CA 2700217C · 2011 [cited by examiner]
JP 4265610B2 · 2009 [cited by applicant]
WO 0029937A2 · 2000 [cited by applicant]
WO 2016073019A1 · 2016 [cited by applicant]
WO 2017053754A1 · 2017 [cited by applicant]
WO 2017178114A9 · 2017 [cited by applicant]
Vechev et al. “Write Barrier Elision for Concurrent Garbage Collectors”, 2004 (Year: 2004). [cited by examiner]
Harris T, et al., “Dynamic filtering: multi-purpose architecture support for language runtime systems,” ACM SIGARCH Computer Architecture News, vol. 38, Issue 1, Mar. 2010, pp. 39-52. [cited by applicant]
Rogers I., “Reducing and eliding read barriers for concurrent garbage collectors,” ICOOOLPS '11: Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Sy… [cited by applicant]
Title: Understanding memory allocation of Scheme programs author: M Serrano published on 2000. [cited by applicant]
Verma A., “The comprehensive guide to react's virtual DOM”, May 15, 2021, pp. 23. [cited by applicant]
Wilson, P.R., et al., “A “Card-making” scheme for controlling intergenerational differences in generation-based garbage collection on stock hardware,” ACM SIGPLAN Notices, vol. 24, Issue 5, May 1989, pp. 87-92. [cited by applicant]
Write Barrier Elision for Concurrent Garbage Collectors by Vechev (Year: 2004). [cited by applicant]
Yang et al., “Deep Dive into ZGC: A Modern Garbage Collector in OpenJDK”, ACM Transactions on Programming Language and Systems, ACM, New York, NY, 2022, vol. 44, No. 4, 34 Pages. [cited by applicant]
Yang et al., “Improving Program Locality in the GC using Hotness,” PLDI' 20, pp. 301-313, Jun. 15-20, 2020. [cited by applicant]
Yuasa et al., “Return Barrier”, International Lisp Conference, 2002, pp. 1-12 (Year: 2002). [cited by applicant]
Yuasa et al., “Return Barrier,” International Lisp Conference, 2002, 12 pages. [cited by applicant]
Yuasa, T., “Real-time garbage collection on general-purpose machines,” Journal of Systems and Software, vol. 11, Issue 3, Mar. 1990, pp. 181-198. [cited by applicant]
ZGC Concurrent Class Unloading—Another Safepoint Operation Bites the Dust: available online at //cr.openjdk.java.net/˜pliden/slides/ZGC-Jfokus-2019.pdf>, Feb. 4, 2019, 55 pages. [cited by applicant]
Zhao et al., “Low-latency, high-throughput garbage collection”, PLDI 2022: Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation, Jun. 2022, pp. 76-91. [cited by applicant]
“Basic Graph Algorithms”, Indian Computing Olympiad, Retrieved from //www.iarcs.org.in/inoi/online-study-material/topics/graphs-dfs.php, Retrieved on Dec. 8, 2022, pp. 3. [cited by applicant]
“Lazy Compaction”, Retrieved from //wiki.se.oracle.com/display/JPG/Lazy+Compaction, Retrieved on Sep. 20, 2022, 2 Pages. [cited by applicant]
“React as UI runtime”, Overreacted, Feb. 2, 2019, pp. 38. [cited by applicant]
“Recitation 8—Dijkstra's Algorithm and DFS Numberings”, Parallel and Sequential Data Structures and Algorithms, 15-210 (Fall 2013), Oct. 16, 2013, pp. 1-6. [cited by applicant]
“What is Schema?” Retrieved from //github.com/json-schema-org/understanding-json-schema, Jan. 11, 2023, pp. 3. [cited by applicant]
“ZGC—Generations Revision 2,” accessed at //wiki.se.oracle.com/display/JPG/ZGC+-+Generations+Revision , Feb. 1, 2020, pp. 6. [cited by applicant]
A concurrent, generational garbage collector for a multithreaded implementation of ML by Doligez (Year: 1993). [cited by applicant]
A Hardware Accelerator for Tracing Garbage Collection by Maas (Year: 2018). [cited by applicant]
Armbrust Michael Michael@Databricks Com et al, “Spark SQL Relational Data Processing in Spark,” Proceedings of The 2015 ACM SIGMOD International Conference on Management of Data, SIGMOD '15, ACM Press, New York, New Yor… [cited by applicant]
Benjamin Zorn, Barrier Methods for Garbage Collection, Nov. 1990, UC Boulder available at: //spl.cde.state.co.us/artemis/ucbserials/ucb51110internet/1990/ucb51110494internet.pdf (Year: 1990). [cited by applicant]
Boehm et al.; “Efficient In-Memory Indexing with Generalized Prefix Trees”, downloaded from //pdfs.Semanticscholar.org/c5ca/a359fe6b345580a4dd476d5dd41 a90bf301c.pdf; Mar. 26, 2018. [cited by applicant]
Click et al.; “The Pauseless GC Algorithm”, VEE 05, Jun. 11-12, 2005, Chicago, Illinois, USA. Copyright 2005 ACM 1-59593-047-7/05/0006 . . . S5.00. [cited by applicant]
Clifford et al., “Memento Mori: Dynamic Allocation-Site-Based Optimizations”, ACM SIGPLAN Notices, vol. 50, No. 11, Jun. 14, 2015, pp. 105-117. [cited by applicant]
David Gnedt, “Fast Profiling in the HotSpot Java VM with Incremental Stack Tracing and Partial Safepoints,” Faculty of Engineering and Natural Sciences, 2014, 57 pages. [cited by applicant]
Detlefs; “Concurrent Remembered Set Refinement in Generational Garbage Collection”, Proceedings of the USENIX Java VM '02 Conference, Aug. 1-2, 2002, San Francisco, CA. [cited by applicant]
Domani et al., “Implementing an On-the-fly Garbage Collector for Java,” ACM SIGPLAN Notices, vol. 36, No. 1, 2000, pp. 155-166. [cited by applicant]
Dorai et al., Control delimiters and their hierarchies, LISP and Symbolic Computation: An International Journal, vol. 3, 1990, pp. 67-99. [cited by applicant]
Ellis D., “What is Swagger? A beginner's guide”, Jul. 26, 2022, pp. 6. [cited by applicant]
Feng et al.; “Trie-join: a trie-based method for efficient string similarity joins”, Published online Oct. 4, 2011; The VLDB Journal Springer-Verlag 2011. [cited by applicant]
Fitzgerald; “The Case for Profile Directed Selection of Garbage Collectors”, Proceedings of the 2nd International Symposium on Memory Management, ACM, New York, NY USA, 111-120, DOI=10.1145/362422.362472, doi.acm.org/10… [cited by applicant]
Generational Garbage Collection, Write Barriers/Write Protection and userfaultfd(2) by Cracauer (Year: 2016). [cited by applicant]
Getting started with Z Garbage Collector(ZGC) in Java 11 [Tutorial] by Davis (Year: 2019). [cited by applicant]
Goetz, Java theory and practice Garbage collection in the HotSpot JVM, Generational and concurrent garbage collection, IBM Developer Works, Nov. 25, 2003. [cited by applicant]
Heule et al., “HyperLogLog in practice: algorithmic engineering of a state of the art cardinality estimation algorithm,” EDBT '13: Proceedings of the 16th International Conference on Extending Database Technology, Mar. … [cited by applicant]
Hosking; “A Comparative Performance Evaluation of Write Barrier Implementations”, Proceedings ACM Conference on Object-Oriented Programming Systems, Languages and Applications, Vancouver, Canada, Oct. 1992, pp. 92-109. [cited by applicant]
How to Implement Java's hashCode Correctly, May 19, 2016, Available online at sitepoint.com/how-to-implement-javas-hashcode-correctly/>, 7 pages. [cited by applicant]
JDK 15, Available online at //openjdk.java.net/projects/jdk/15/ >, Last updated, Sep. 15, 2020, 2 pages. [cited by applicant]
JEP 333: ZGC: A Scalable Low-Latency Garbage Collector(Experimental) by Liden and Karlsson (Year: 2020). [cited by applicant]
Joisha; “Sticky Tries: Fast Insertions, Fast Lookups, No Deletions for Large Key Universe”, ISMM '14, Jun. 12, 2014, Edinburgh UK. [cited by applicant]
Kliot et al., “A Lock-Free, Concurrent, and Incremental Stack Scanning for Garbage Collectors,” In Proceedings of the ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE '09), 2009, pp. 11… [cited by applicant]
Lokesh Gupta, “Java Secure Hashing—MD5, SHA256, SHA512, PBKDF2, BCrypt, Scrypt,” Available online at //howtodoinjava.com/security/how-to-generate-secure-password-hash-md5-sha-pbkdf2-bcrypt-examples/> printed on Apr. 14,… [cited by applicant]
M. Felleisen et al., Beyond Continuations: Technical Report No. 216, Feb. 1987, 13 pages. [cited by applicant]
Main—Main—OpenJDK Wiki, Created by Iris Clark, last modified by Per Liden, available online at <URL: //wiki.openjdk.java.net/display/zgc/Main>, Oct. 15, 2020, 9 pages. [cited by applicant]
Mohamed A. El-Zawawy, “Recognition of Logically Related Regions Based Heap Abstraction”, Journal of the Egyptian Mathematical Society, vol. 20, Issue 2, Jul. 2012, pp. 64-71, arXiv:1212.5094 [cs.LO]. [cited by applicant]
Mostly Concurrent Garbage Collection Revisited by Barabash (Year: 2003). [cited by applicant]
Olsson et al.; “Trash a dynamic LC-trie and hash data structure”, Trita-CSC-TCS 2006:2, ISRN/KTH/CSC/TCS-2006/2-SE, ISSN 1653-7092, Aug. 18, 2006. [cited by applicant]
Open JDK, “HotSpot Glossary of Terms”, 2006, Sun Microsystems, available at openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html>, 6 pages. [cited by applicant]
Osterlund E., “Garbage Collection supporting automatic JIT parallelization in JVM”, Computer Science, Jun. 26, 2012, pp. 29. [cited by applicant]
Osterlund E., “Going Beyond On-The-Fly Garbage Collection and Improving Self-Adaptation with Enhanced Interfaces”, Computer Science, 2019, pp. 68. [cited by applicant]
Osterlund et al., “Block-Free Concurrent GC: Stack Scanning and Copying,” International Symposium on Memory Management, vol. 51, 2016, 12 pages. [cited by applicant]
Per Liden, The Design of ZGC—A scalable Low-Latency Garbage Collector for Java: available online at cr.openjdk.java.net/˜pliden/slides/ZGC-PLMeetup-2019.pdf>, Jun. 12, 2019, 84 pages. [cited by applicant]
Pufek et al., “Analysis of Garbage Collection Algorithms and Memory Management in Java”, 2019 42nd International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO), Croatian… [cited by applicant]
Robbin Ehn, “JEP 312: Thread-Local Handshakes,” Hotspot Dash Dev at Openjdk Dot Java Dot Net, available at openjdk.java.net/jeps/312>, 2018, 3 pages. [cited by applicant]
Ryan Sciampacone et al, “Garbage collection in WebSphere Application Server V8, Part 2: Balanced garbage collection as a new option”, IBM developerWorks, Aug. 3, 2011. [cited by applicant]
Saxena et al., “Key and Value Paired Data using Java Hash Table,” International Journal of Engineering and Management Research, vol. 4, Issue 1, Feb. 2014, pp. 81-89. [cited by applicant]
Stefan Karlsson, JEP 439: Generational ZGC, Aug. 25, 2021, OpenJDK, available at: openjdk.org/jeps/439 (Year: 2021). [cited by applicant]
Tene et al.; C4: The Continuously Concurrent Compacting Collector ISMM'11, Jun. 4-5, 2011, San Jose, CA, USA Copyright 2011, ACM 978-M503-0263-0/11/06 . . . $10.00. [cited by applicant]
The Z Garbage Collector—Low Latency GC OpenJDK, available online at //cr.openjdk.java.net/˜pliden/slides/ZGC-Jfokus-2018.pdf>, 2018, 96 pages. [cited by applicant]
Title: Detecting and eliminating memory leaks using cyclic memory allocation, author: JJ Nguyen et al., published on 2007. [cited by applicant]
Title: Reconsidering custom memory allocation; author:: ED Berger et al., published on 2002. [cited by applicant]