Hace tiempo me tope que esta excepcion y buscando en varios foros sugerian la ejecucion de las clases enviandoles parametros especiales( java -Xmx[memoria]) ya que la maquina virtual de java utiliza 100 Mb para la ejecucion de clases.
Nunca me parecio razonable la solucion, por dos razones la primera, la arquitectura debe de ser dirigida a aprovechar los recursos del sistema, no a malgastarlos; la segunda, al ser un equipo de desarrollo esta solucion no podria ser aceptable.
Mi solucion: Subir un servlet que como primera instruccion llamara al recolector de basura
System.gc();
Con esto parece ser que libero la memoria necesaria para que el web server en mi caso iPlanet, respondiera.