So, I thought the whole point of managed languages was to abstract this stuff away from the programmer. If I have to have a deep understanding of the JVM's implementation details to do anything non-trivial I may as well just stick with C. At least C makes it very clear as to what is going on.