I was playing around with Mustang b33 and I flipped on the -XX:+PrintCompilation stuff. (Sometimes it’s fun to see what HotSpot is up to.)
After a while I noticed a bunch of lines like this:
522 made zombie javax.swing.JComponent::paintChildren
551 made zombie javax.swing.JComponent::_paintImmediately
576 made zombie java.awt.Component::getGraphics
625 made zombie com.sun.java.swing.SwingUtilities2::getFontMetrics
These mere methods that had been compiled earlier on in the execution of the program under test. That first line appeared after the # in the first column had got to 1050.
A while ago someone posted a list somewhere the indicated what all the symbols between the # and the method signature meant (e.g. “!” and “s”). But “made zombie” is something new.
Just what does it mean?
edit
More info:
That first line:
522 made zombie javax.swing.JComponent::paintChildren
was followed a while later by the more typical:
1062 ! javax.swing.JComponent::paintChildren (644 bytes)
and later:
1062 made zombie javax.swing.JComponent::paintChildren
So it seems the zombies are given life again and then made back into zombies.
Maybe a “zombie” is simply excluded from further consideration for a while so HotSpot can focus on other methods? I.e. maybe the method is a little too much of a “hot spot” and is dominating the time spent by the HotSpot optimizing code with little actual gains? Just a guess.