Capacidade String

Ola pessoal,

estou fazendo um programa que utiliza forca bruta para resolucao do problema. Pra isso, eu preciso gerar todas as palavras possiveis com as letras ‘a’ e ‘b’ ate um determinado tamanho n.
Mas meu programa esta dando um erro quando esse n eh grande.

Existe algum limite do tamanho de caracters de um String? Eu posso controlar isso??

Meu codigo é:

// Metodo que gera todas as palavras possiveis do alfabeto {a, b} de tamanho menor igual a n. public ArrayList<String> geraPalavras(int tamanho){ ArrayList<String> lista = new ArrayList<String>(); ArrayList<String> listaAux = new ArrayList<String>(); if (tamanho > 0){ lista = this.geraPalavras(tamanho - 1); if (lista.size() == 0){ lista.add("a"); lista.add("b"); } else { for (String e: lista){ if (e.length() == tamanho - 1){ listaAux.add(e.concat("a")); listaAux.add(e.concat("b")); } } for (String e: listaAux){ lista.add(e); } } return lista; } else return lista; }

E o erro foi o seguinte:
Exception in thread “main” java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.ensureCapacity(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at Automato.geraPalavras(Automato.java:44)
at Automato.geraPalavras(Automato.java:37)
at Automato.geraPalavras(Automato.java:37)
at Automato.geraPalavras(Automato.java:37)
at Main.main(Main.java:56)

Se alguem souber me responder, agradeço.

Bjs

Veronica, o espaço destinado aos seus objetos em memória é insuficiente.Tente mudar os parâmetros da JVM.
Veja:
http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp

Obrigada Ironlynx, utilizei -Xms128m -Xmx512m para aumentar a memoria.

Soh uma coisinha… nao eh verorica, eh vanessa :smiley:

Bjsss

Vanessa, como vc modificou os parâmetros da JVM?

Obrigado,

Orlando

Tunim,

na epoca eu fiz isso no Eclipse. Eh so mudar as configuracoes, em Run As Dialog, na parte Arguments, opcao VM arguments.
Vc tbm pode fazer isso por linha de comando, na hora de executar o progrma.

Espero que ajude.

Valeu Vanessa, muito obrigado.

Se quiser uma solução que eu fiz tem nesse tópico
http://www.guj.com.br/posts/list/76356.java
no ultimo post eu coloquei o código completo e no main é só voce usar new CharInterval(‘a’,‘b’) que sua string será feita apenas com esses chars
tipo assim
começo
a>b>aa>ab>ba>bb>aaa>aab

é isso que voce precisa?

Eu só não criei um sistema pra colocar o maximo de chars mas já é um começo