Sometimes you get so deep into the code you fail to see the simple things.
You end up reaching up into the trees, instead of just chopping them down.
I recently finished a piece of code and for some reason, at random intervals my code would completely fall apart, killing my JVM.
Now this threw an error that sent me on absolute wild goose chases, simply because the error did not match what was happening, which is usually the case when you are not clearing memory as you should be (win32 api).
Using the ever handy SysInternal Process Explorer I was able to pick up an ever-incrementing set of handles and thus the problem to my JVM deciding it needed a break.