Con un profiler, ejecutas tu aplicacion dentro de un entorno controlado y con herramientas de monitorizacion. Así puedes ver la memoria que gasta el programa en cada momento y más importante, donde la gasta.
Puedes llamar ademas al gargabe collector a mano y ver si baja o no baja el consumo de memoria (no es garantia de limpieza total pero normalmente algo se deberia limpiar) etc.
Es decir, son herramientas de monitorizacion para ver con más exactitud que es lo que hace tu programa con la memoria y otras cosas. Y así poder diagnosticar.
Si vuestro problema es tan claro, no hace falta, pero a veces tambien se usan junto con herramientas para simular accesos a una aplicacion "stress tests", de forma que puedas monitorizar como reacciona tu aplicacion ante picos de carga etc.
Imprescindible, desde mi punto de vista, para cualquier aplicacion "profesional" que deba tener unas minimas garantias. Aunque desgraciadamente no es muy comun usarlas... en fin
. Tampoco me quejaré mucho por que esa falta de pruebas y demás, por parte de otros, pagó parte de mi hipoteca
.