String sql = "SELECT PHONE_NO PHONE_NO,USER_ID USER_ID FROM "+ tableName ;
 try {
     dbaction.getConn();
         Statement stmt = dbaction.con.createStatement();     
      ResultSet rs = stmt.executeQuery(sql);
while (rs.next()){
                   File file = new File(fileName);
if(!file.exists()){
if(!file.getParentFile().mkdirs()){
System.out.println("创建父目录失败!");
}
if(!file.createNewFile()){
System.out.println("文件创建失败!");
return ;
}
}

                         writer = new BufferedWriter(new FileWriter(fileName,true));     
        
    String phoneNo =  rs.getString(1).trim();
    String userId =  rs.getString(2).trim();
   
    writer.write(phoneNo+"\r\n");
    writer.flush();           

 String userIdExt = userId.substring(userId.length()-2, userId.length());
 smallFileName = filePre + time + "_"+userIdExt+".txt";
//******生成带userId的文件
  file = new File(smallFileName);
      if(!file.exists()){
// if(!file.getParentFile().mkdirs()){
// System.out.println("创建父目录失败!");
// }
if(!file.createNewFile()){
System.out.println("文件创建失败!"); 
}
       }
writerSml = new BufferedWriter(new FileWriter(smallFileName,true));
       writerSml.write(phoneNo+"|"+userId+"\r\n");
       writerSml.flush();
       
       writer.close(); 
           writerSml.close();
       
           phoneNum++;
             }
1、需求:从数据库中读取百万级的记录,(包括用户手机号、用户id)取出后按照userid后两位分(00-99)生成100不同的txt文件。
2、以上是代码,程序运行一段时间后,当取数过多的时候导致系统内存溢出,
  问题:1、怎么优化下代码能够减少系统内存的使用。
        2、怎么优化下代码提高系统的效率。java io,java数据导出java内存释放