-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Comparing changes
Open a pull request
base repository: openjdk/jdk
base: 45e68ae2
head repository: openjdk/jdk
compare: 83eff9fe
- 19 commits
- 59 files changed
- 2 contributors
Commits on Oct 24, 2023
-
The JEP covers the idea very well, so I'm only covering some implementation details here: * regions get a "pin count" (reference count). As long as it is non-zero, we conservatively never reclaim that region even if there is no reference in there. JNI code might have references to it. * the JNI spec only requires us to provide pinning support for typeArrays, nothing else. This implementation uses this in various ways: * when evacuating from a pinned region, we evacuate everything live but the typeArrays to get more empty regions to clean up later. * when formatting dead space within pinned regions we use filler objects. Pinned regions may be referenced by JNI code only, so we can't overwrite contents of any dead typeArray either. These dead but referenced typeArrays luckily have the same header size of our filler objects, so we can use their headers for our fillers. The problem is that previously there has been that restriction that filler objects are half a region size at most, so we can end up with the need for placing a filler object header inside a typeArray. The code could be clever and handle this situation by splitting the to be filled area so that this can't happen, but the solution taken here is allowing filler arrays to cover a whole region. They are not referenced by Java code anyway, so there is no harm in doing so (i.e. gc code never touches them anyway). * G1 currently only ever actually evacuates young pinned regions. Old pinned regions of any kind are never put into the collection set and automatically skipped. However assuming that the pinning is of short length, we put them into the candidates when we can. * there is the problem that if an applications pins a region for a long time g1 will skip evacuating that region over and over. that may lead to issues with the current policy in marking regions (only exit mixed phase when there are no marking candidates) and just waste of processing time (when the candidate stays in the retained candidates) The cop-out chosen here is to "age out" the regions from the candidates and wait until the next marking happens. I.e. pinned marking candidates are immediately moved to retained candidates, and if in total the region has been pinned for `G1NumCollectionsKeepUnreclaimable` collections it is dropped from the candidates. Its current value is fairly random. * G1 pauses got a new tag if there were pinned regions in the collection set. I.e. in addition to something like: `GC(6) Pause Young (Normal) (Evacuation Failure) 1M->1M(22M) 36.16ms` there is that new tag `(Pinned)` that indicates that one or more regions that were pinned were encountered during gc. E.g. `GC(6) Pause Young (Normal) (Pinned) (Evacuation Failure) 1M->1M(22M) 36.16ms` `Pinned` and `Evacuation Failure` tags are not exclusive. GC might have encountered both pinned regions and evacuation failed regions in the same collection or even in the same region. whitespace fixes
Configuration menu - View commit details
-
Copy full SHA for 44d430a - Browse repository at this point
Copy the full SHA 44d430aView commit details -
Thomas Schatzl committed
Oct 24, 2023 Configuration menu - View commit details
-
Copy full SHA for 8b9e9a0 - Browse repository at this point
Copy the full SHA 8b9e9a0View commit details
Commits on Oct 25, 2023
-
Fix typo in src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/g1…
…/HeapRegion.java so that resourcehogs/serviceability/sa/ClhsdbRegionDetailsScanOopsForG1.java does not fail
Thomas Schatzl committedOct 25, 2023 Configuration menu - View commit details
-
Copy full SHA for fddb891 - Browse repository at this point
Copy the full SHA fddb891View commit details -
Improve somewhat unstable test
Thomas Schatzl committedOct 25, 2023 Configuration menu - View commit details
-
Copy full SHA for b882dd6 - Browse repository at this point
Copy the full SHA b882dd6View commit details
Commits on Oct 30, 2023
-
Thomas Schatzl committed
Oct 30, 2023 Configuration menu - View commit details
-
Copy full SHA for e664639 - Browse repository at this point
Copy the full SHA e664639View commit details -
Move tests into gc.g1.pinnedobjs package
Thomas Schatzl committedOct 30, 2023 Configuration menu - View commit details
-
Copy full SHA for 1b1d8ba - Browse repository at this point
Copy the full SHA 1b1d8baView commit details
Commits on Oct 31, 2023
-
Improve TestPinnedOldObjectsEvacuation test
Thomas Schatzl committedOct 31, 2023 Configuration menu - View commit details
-
Copy full SHA for 78cb9df - Browse repository at this point
Copy the full SHA 78cb9dfView commit details -
Thomas Schatzl committed
Oct 31, 2023 Configuration menu - View commit details
-
Copy full SHA for e5dfbb7 - Browse repository at this point
Copy the full SHA e5dfbb7View commit details
Commits on Nov 2, 2023
-
Thomas Schatzl committed
Nov 2, 2023 Configuration menu - View commit details
-
Copy full SHA for fb1deac - Browse repository at this point
Copy the full SHA fb1deacView commit details -
Renamings to (almost) consistently use the following nomenclature for…
… evacuation failure and types of it: * evacuation failure is the general concept. It includes * pinned regions * allocation failure One region can both be pinned and experience an allocation failure. G1 GC messages use tags "(Pinned)" and "(Allocation Failure)" now instead of "(Evacuation Failure)" Did not rename the G1EvacFailureInjector since this adds a lot of noise.
Thomas Schatzl committedNov 2, 2023 Configuration menu - View commit details
-
Copy full SHA for 73f61da - Browse repository at this point
Copy the full SHA 73f61daView commit details -
Add documentation about why and how we handle pinned regions in the y…
…oung/old generation.
Configuration menu - View commit details
-
Copy full SHA for 5ae05e4 - Browse repository at this point
Copy the full SHA 5ae05e4View commit details
Commits on Nov 3, 2023
-
ayang review - renamings + documentation
Thomas Schatzl committedNov 3, 2023 Configuration menu - View commit details
-
Copy full SHA for 8342b80 - Browse repository at this point
Copy the full SHA 8342b80View commit details -
Thomas Schatzl committed
Nov 3, 2023 Configuration menu - View commit details
-
Copy full SHA for f973553 - Browse repository at this point
Copy the full SHA f973553View commit details
Commits on Nov 6, 2023
-
Configuration menu - View commit details
-
Copy full SHA for d0c2c3f - Browse repository at this point
Copy the full SHA d0c2c3fView commit details -
Merge tag 'jdk-22+21' into 8318706-implementation-of-region-pinning-i…
…n-g1 Added tag jdk-22+21 for changeset d96f38b
Configuration menu - View commit details
-
Copy full SHA for 251f4d3 - Browse repository at this point
Copy the full SHA 251f4d3View commit details -
Merge tag 'jdk-22+22' into 8318706-implementation-of-region-pinning-i…
…n-g1 Added tag jdk-22+22 for changeset d354141
Configuration menu - View commit details
-
Copy full SHA for 2ad3968 - Browse repository at this point
Copy the full SHA 2ad3968View commit details
Commits on Nov 7, 2023
-
Configuration menu - View commit details
-
Copy full SHA for d9ccccf - Browse repository at this point
Copy the full SHA d9ccccfView commit details -
"GCLocker Initiated GC" is not a valid GC cause for G1 any more
Thomas Schatzl committedNov 7, 2023 Configuration menu - View commit details
-
Copy full SHA for c272a73 - Browse repository at this point
Copy the full SHA c272a73View commit details -
Configuration menu - View commit details
-
Copy full SHA for 83eff9f - Browse repository at this point
Copy the full SHA 83eff9fView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff 45e68ae2...83eff9fe