Maybe this is too niche, but I've wanted to try this since I realized the Heisenbug nature of allocation analysis on the JVM - if you instrument allocation points, the JVM stops optimizing them, and your results are dominated by allocations that don't normally go on the heap. See here for an example: https://twitter.com/jakewins/status/707754868497231872
This is particularly problematic in languages like scala that allocate a lot of objects the JVM is normally good at removing.
The idea in this little tool is simple: Use a fastdebug build of the JVM to find out what allocations HotSpot removes, and then filter those allocations out of the report. The end result is an allocation report that's actionable - if you address the allocations in the report, you'll actually make a dent in heap usage.
This is particularly problematic in languages like scala that allocate a lot of objects the JVM is normally good at removing.
The idea in this little tool is simple: Use a fastdebug build of the JVM to find out what allocations HotSpot removes, and then filter those allocations out of the report. The end result is an allocation report that's actionable - if you address the allocations in the report, you'll actually make a dent in heap usage.