all of the while loops i see on this page have a check to see if the recordset is at the end, for example:
while((numrows <> 0) AND (Not rsAstro.EOF))
the only way this will cause a memory issue is if the recordset select statement returns to many rows.