我最近编程时 碰到了Java内存泄露问题,那位大哥能帮帮我  如何避免这个问题
import java.util.*;
import java.sql.*;
public class OutputArticle{
Set<Article> articles = new HashSet<Article>();
public OutputArticle(){
    Connection conn = DB.getConn();
    tree(articles,conn,0);
    for(Iterator<Article> it = articles.iterator();it.hasNext();){
                  Article b = it.next();
                  System.out.println(b.getTitle());
             }
    DB.close(conn);
   }
   public static void main(String[] args){
   new OutputArticle();
   }
private void tree(Set<Article> articles,Connection conn,int id){
String sql = "select * from article where pid="+id;
Statement stmt = DB.getStmt(conn);
ResultSet rs = DB.getResultSet(stmt,sql);
try{
while(rs.next()){
Article a = new Article();
a.setId(rs.getInt("id"));
a.setPid(rs.getInt("pid"));
a.setRootid(rs.getInt("rootid"));
a.setTitle(rs.getString("title"));
a.setPdate(rs.getTimestamp("pdate"));
a.setIsleaf(rs.getInt("isleaf")==0?true:false);
articles.add(a);
a=null;
while(rs.getInt("isleaf")==1){
tree(articles,conn,rs.getInt("id"));
}
}
}catch(SQLException e){   
e.printStackTrace();      
}finally{
try{
if(stmt!=null){
stmt.close();
stmt=null;
}
if(rs!=null){
rs.close();
rs=null;
}
}catch(Exception e1){
e1.printStackTrace();
}
}
}
}运行时抛出的如下异常:
D:\jwork\li>javac OutputArticle.java
D:\jwork\li>java OutputArticle
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at java.util.HashMap.resize(Unknown Source)
        at java.util.HashMap.addEntry(Unknown Source)
        at java.util.HashMap.put(Unknown Source)
        at java.util.HashSet.add(Unknown Source)
        at OutputArticle.tree(OutputArticle.java:30)
        at OutputArticle.tree(OutputArticle.java:33)
        at OutputArticle.tree(OutputArticle.java:33)
        at OutputArticle.tree(OutputArticle.java:33)
        at OutputArticle.<init>(OutputArticle.java:7)
        at OutputArticle.main(OutputArticle.java:15)