SLO profiles the data locality in your program, and afterwards suggests refactorings that can improve that data locality, leading to fewer cache misses and faster execution.
A pretty primitive portable profiler for Java 5.0. It only produces "flat" profiles, has only experimental support for multithreaded code, and aims at minimal overhead.