I am getting a system.outofmemory exception in my code:
While r1.Read()
                    menu1id = r1("id")
                    db.AddInParameter(command2, "@menu1id", DbType.Int32, menu1id)
                    r2 = db.ExecuteReader(command2)
                    command2.Parameters.Clear()
                    menu1heading = r1("Heading")
                    If r1("url") IsNot Nothing And r1("moduleid") = 0 Then
                        url = r1("url").ToString
                        If InStr(url, "file:///") > 0 Then
                            Dim builder As New StringBuilder
                            builder.Append("<a href=")
                            builder.Append(r1("url"))
                            builder.Append(" target=")
                            builder.Append(r1("urltarget"))
                            builder.Append(">")
                            builder.Append(menu1heading)
                            builder.Append("</a>")
                            level1.Add(builder.ToString)
                        Else
                            Dim builder As New StringBuilder
                            builder.Append("<a href=http://")
                            builder.Append(r1("url"))
                            builder.Append(" target=")
                            builder.Append(r1("urltarget"))
                            builder.Append(">")
                            builder.Append(menu1heading)
                            builder.Append("</a>")
                            level1.Add(builder.ToString)
                        End If
                    Else
                        Dim builder As New StringBuilder
                        builder.Append("<a href=~/Default.aspx?id=")
                        builder.Append(r1("id"))
                        builder.Append(">")
                        builder.Append(menu1heading)
                        builder.Append("</a>")
                        level1.Add(builder.ToString)
                    End If
                    While r2.Read
                        menu2id = r2("id")
                        db.AddInParameter(command3, "@menu2id", DbType.Int32, menu2id)
                        r3 = db.ExecuteReader(command3)
                        command3.Parameters.Clear()
                        menu2heading = r2("Heading")
                        If r2("url") IsNot Nothing And r2("moduleid") = 0 Then
                            Dim builder As New StringBuilder
                            builder.Append("<a href=http://")
                            builder.Append(r2("url"))
                            builder.Append(" target=")
                            builder.Append(r2("urltarget"))
                            builder.Append(menu2heading)
                            builder.Append("</a>")
                            level2.Add(builder.ToString)
                        Else
                            Dim builder As New StringBuilder
                            builder.Append("<a href=~/Default.aspx?id=")
                            builder.Append(r2("id"))
                            builder.Append(">")
                            builder.Append(menu2heading)
                            builder.Append("</a>")
                            level2.Add(builder.ToString)
                        End If
                        While r3.Read
                            menu3heading = r3("Heading")
                            menu3id = r3("id")
                            If r3("url") IsNot Nothing And r3("moduleid") = 0 Then
                                Dim builder As New StringBuilder
                                builder.Append("<a href=http://")
                                builder.Append(r3("url"))
                                builder.Append(" target=")
                                builder.Append(r3("urltarget"))
                                builder.Append(">")
                                builder.Append(menu3heading)
                                builder.Append("</a>")
                                level3.Add(builder.ToString)
                            Else
                                Dim builder As New StringBuilder
                                builder.Append("<a href=~/Default.aspx?id=")
                                builder.Append(r3("id"))
                                builder.Append(">")
                                builder.Append(menu3heading)
                                builder.Append("</a>")
                                level3.Add(builder.ToString)
                            End If
                        End While
                        r3.Close()
                    End While
                    r2.Close()
                End While
                r1.Close()
            End While
            r0.Close()
Please can you tell me how I go about diagnosing and fixing this exception? thanks a lot.