https://www.artima.com/insidejvm/ed2/jvmP.html