-
Notifications
You must be signed in to change notification settings - Fork 381
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
[PROF-9469] Skip heap samples with age 0 #3573
Conversation
ca576a9
to
cc459c7
Compare
cc459c7
to
f7989e4
Compare
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #3573 +/- ##
==========================================
- Coverage 98.27% 98.27% -0.01%
==========================================
Files 1274 1274
Lines 75233 75247 +14
Branches 3545 3545
==========================================
+ Hits 73934 73947 +13
- Misses 1299 1300 +1 ☔ View full report in Codecov by Sentry. |
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.
Looks good! I left my usual smattering of minor suggestions, one bigger suggestion and one maybe-a-bug note ;)
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.
👍 Looks great!
I'm slightly curious if the change moved the micro-benchmark results needle, but feel free to ignore my curiosity haha
0cbb007
to
deaccf7
Compare
Did a local run and saw
which looks similar enough to the original in the PR description |
Ah! Somewhat sad, I was hoping this tweak would buy is a bit more headroom. I guess it might still on real-world usecases, but would've been cool to see in the microbenchmark as well :) |
What does this PR do?
Skip updating and serialization of heap samples for objects that were allocated in the current GC epoch/generation. The fact that these objects are still alive is usually just a happy accident from the fact that GC hasn't run yet and thus just add noise when you want to understand long-term heap usage and, more specifically, memory leaks.
In fact, allocation profiles alone can give you a rather accurate description of what the population of age == 0 should look like at any-one time. If no GCs ever ran, allocation profiles would be === to heap profiles as all objects would be technically alive.
Motivation:
Additional Notes:
Some micro-benchmark results:
How to test the change?
Unsure? Have a question? Request a review!