No one hates code like software engineers. Many Java applications are larger than they need to be: a mix of your own beautiful code with legacy cruft written years ago that may not even be in use. That older cruft code becomes a problem for updating libraries, upgrading JDK versions, or bringing in new colleagues. Unfortunately the code can't be deleted because deleting the wrong thing will break the app and figuring out what to delete takes time away from features. Things like Emma, static analysis, and unit testing are helpful but they only tell us what breaks -- they don't tell us if the broken thing is still necessary. Here we'll explore ways to leverage JVM execution to track what methods ran and identify what can safely be removed to reduce the overall maintenance, improve developer happiness, and reduce the overall stress.