The Object-pool pattern is your friend here. A pool contains a number of already created objects that are returned to the pool after used. On the other hand, instead of creating a new object, a one from the pool is taken if available.
There are number of different implementations easily googlable, find one and modify to suit your needs.