use entity pool to optimize garbage collection