It seems like the memory leak stops after a little while (after consuming several MB) if you leave the connection established. However, in our application, we need to disconnect and connect to the GPS numerous times. By the time that this is done, we have used almost all of the memory and the program either runs very, very slowly or hangs.
The reason that we have to frequently disconnect and connect to the GPS is that we need to capture an accurate GPS reading and we have found that the GPSTools code does not always update the latitude and longitude values if you walk slowly from one point to another, within a small radius (about 100ft). It seems like there is a velocity threshold that you have to cross in order to get it to change over small distances (e.g. 10ft). On this subject, if there is a better way to force the GPSTools to refresh the lat/long value at any given time, please let me know.