It seems like this would be a really useful improvement, and I'm surprised that it doesn't already seem to have been requested on the coreutils issue tracker.
In my hands, `top` shows resident memory increasing steadily too....
It is perhaps more instructive to compare output from, for example
seq 1 1000000 | valgrind --time-unit=B --pages-as-heap=yes --trace-children=yes --tool=massif --massif-out-file=massif.dimsum.100000.out.%p dimsum -n 1
with
seq 1 1000000 | valgrind --time-unit=B --pages-as-heap=yes --trace-children=yes --tool=massif --massif-out-file=massif.shuf.100000.out.%p shuf -n 1
in my hands, shuf is faster and uses less memory for this task.
How about you?
So, let's pursue this: http://lists.gnu.org/archive/html/coreutils/2012-11/msg00079...
(This bit me once. Filed a bug about maybe clarifying the man page, but nope, apparently we're all supposed to recognize instantly the implication of a random hash.)