TODO how to use mem pool to reduce GC