On slow platforms like WinMo the ZCT reaping can actually take more time than a mark increment or the finalization phase of GC, even with moderate heap sizes. It's possible that the ZCT reap times need to be bounded somehow, like incremental mark pauses are.
With the changes pending in bug #506012 this might now be possible. It would go like the following. The reaper would operate like IncrementalMark. It would be given a time slice and it would check the performance counter every k pointers. If the time slice expires, the pinned objects would be copied from the pinning memory onto the ZCT (there are usually very few of these), any pinned objects in the untouched part of the ZCT would be unpinned, and reaping would terminate normally. If invoked from the GC the reap budget would be subtracted from the budget of the caller. If there is a correspondence between how long an element has been in the ZCT and how likely it is that it will be pinned then eg oldest-first reaping might make sense, but there's no particular reason to believe that there is such a correspondence so we'd want evidence for it first.
Deferring since RC is likely to go away post-Serrano and the gains for Serrano would be small.