-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8365880: Shenandoah: Unify memory usage accounting in ShenandoahFreeSet #26867
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8365880: Shenandoah: Unify memory usage accounting in ShenandoahFreeSet #26867
Conversation
|
@kdnilsen |
I did some testing after reverting my change to the shared code, and I wasn't able to identify exactly how this change relates to particular regression failures. I've committed new changes to mitigate the issues without changing shared code:
|
| int exitValue; | ||
| do { | ||
| exitValue = run(pb); | ||
| } while ((exitValue != 0) && (allowed_retries-- > 0)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a nit, but the other variables here use Java's camel case convention, so should probably have allowedRetries, not allowed_retries.
|
/integrate |
|
Going to push as commit ec059c0.
Your commit was automatically rebased without conflicts. |
This PR eliminates redundant bookkeeping that had been carried out by both ShenandoahGeneration and ShenandoahFreeSet. In the new code, we keep a single tally of relevant information within ShenandoahFreeSet.
Queries serviced by ShenandoahGeneration are now delegated to ShenandoahFreeSet.
This change eliminates rare and troublesome assertion failures that were often raised when the ShenandoahFreeSet tallies did not match the ShenandoahGeneration tallies. These assertion failures resulted because the two sets of books are updated at different times, using different synchronization mechanisms.
The other benefit of this change is that we have less synchronization overhead because we only have to maintain a single set of books.
Progress
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/26867/head:pull/26867$ git checkout pull/26867Update a local copy of the PR:
$ git checkout pull/26867$ git pull https://git.openjdk.org/jdk.git pull/26867/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 26867View PR using the GUI difftool:
$ git pr show -t 26867Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/26867.diff
Using Webrev
Link to Webrev Comment