Garbage Collection and Skipped Turns
I just use eclipse, but it took so long that I never really did much profiling (with that). Instead, I timed a bunch of candidates for worst cpu usage and printed the times to the console and then focused on those. All of that, until I realized that I was the only bot evaluating 20 points on the secondary waves :-) When I changed that, I think Gilgalad became one of the fastest bots in the top ten.
Some things to optimize: wall smoothing, I think I recall that you used your own algorithm for this. How fast is that? Geometry methods: How efficient are your precise intersection methods?
I assume you already cache your wave data?
what sort of danger function do you use for surfing?
I never really had trouble with gun speed (yet... we'll see what my latest ideas do to that) so I assume you wouldn't either, but you could at least add some code to verify this.