В идеале вам не нужно перезапускать вашу программу или сервлет.
Мой опыт показывает, что большинство причин проблем с памятью обычно возникает из-за проблем с выделением или объединением небольшого набора классов.
Такой инструмент, как VisualVM, отлично подходит для этого, поскольку вы можете выяснить, где находится основная нагрузка при распределении объектов.
Вероятно, это немного сложнее с tomcat, так как вы также будете следить за платформой, но с достаточной осторожностью и терпением вы часто можете определять горячие точки в своей логике.