Erro ao inserir arquivo em arvore

xception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source) at java.lang.AbstractStringBuilder.append(Unknown Source) at java.lang.StringBuffer.append(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at OpcoesAgenda.pesquisa(OpcoesAgenda.java:173) at OpcoesAgenda.main(OpcoesAgenda.java:25)
alguem sabe com resolver?
o codigo que ta dando este erro é o seguinte

[code]private static BST leDados()
{ //String k=JOptionPane.showInputDialog("Digite o nome o arquivo: ");
BST b=new BST();
try {
//if(f.length()==0)//se o tam do arq for zero
//JOptionPane.showMessageDialog(null,“Este arquivo esta vazio!”);
FileReader fr = new FileReader(“F:/Eclipse/workspace/trabalhogb/Agenda.txt”);
BufferedReader in = new BufferedReader(fr);
String line = in.readLine();
//enqnt a linha n estiver vazia eu leio o conteudo do arquivo
while (line != null) {
//e joga dentro da arvore
//usa o metodo separa tokens para organizar o arquivo
Agenda p = separaTokens (line);
String j=JOptionPane.showInputDialog(“Digite o nome do contato a ser inserido:”);
b.insert(j);
line = in.readLine();

		} 
		b.displayTree();
		in.close();
		exibeLista(b);
	}catch (ArrayIndexOutOfBoundsException e) {
		JOptionPane.showMessageDialog(null,"Erro "+e.getMessage());
	} catch (IOException e1) {
		JOptionPane.showMessageDialog(null,"Erro ao fechar arquivo."+e1.getMessage());
	}
	return b;
}[/code]

O erro está dando no método pesquisa, não no método leDados. Poste seu método pesquisa, da classe OpcoesAgenda, incluindo a linha 137.