Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Pool de Strings

Olá pessoal. Abri esse tópico, pois sempre que programei em Java nunca me preocupei com esse Pool de Strings. Nesse sentido minhas dúvidas são:

1) Como saber se o excesso de Strings no Pool está deixando minha aplicação lenta?

2) Todas as Strings declaradas independentemente do escopo delas na aplicação vão para o Pool?

3) Qual é a utilidade desse Pool?

4) Como programar com garantia de que a manipulação de Strings está correta?

Muito obrigado!

2 respostas
solução!

Olá Guilherme! Veja bem, o Pool de Strings (String Pool) é onde ficam armazenadas todas as Strings iniciadas de forma literal, ou seja, iniciadas através de aspas. A utilidade desse pool é a redução do uso de memória do computador quando criamos Strings.

Veja só, a duas formas de instanciar uma String. A primeira é a forma literal, utilizando aspas, a outra é através do construtor da classe String. Ex:

String s1 = "Olá Mundo!";
String s2 = new String("Olá Mundo!");

Mas qual a diferença dessas duas formas?

A diferença é onde será armazenado esse objeto String. Quando utilizamos o construtor, o objeto é armazenado no Heap como os demais objetos. No entanto, quando utilizamos a forma literal o objeto é armazenado no Pool de Strings.

Qual a vantagem do Pool de Strings?

A JVM antes de inserir uma String no Pool de Strings verifica se existe um objeto igual já inserido. No caso de já existir esse objeto, ela reaproveita o mesmo evitando o gasto de memória. Já através do construtor, não é feita a verificação e é criado o mesmo objeto duas vezes, aumentando o uso da memória.

Enfim, espero ter ajudado! Bons Estudos!

Obrigado Romário!