Pretty similar story in .NET. Make sure your inner loops are allocation-free, then ensure allocations are short-lived, then clean up the long tail of large allocations.
Doing huge allocations which go to LOH is quite punishing, but even substantial inter-generational traffic won't kill it.