Alternatywy dla internowania ciągów Java

Ponieważ domyślne internowanie ciągów Java ma dużo złej prasy, szukam alternatywy.

Czy możesz zaproponować API, które jest dobrą alternatywą dla internowania ciągów Java? Moja aplikacja korzysta z Java 6. Moim wymaganiem jest przede wszystkim unikanie powielania łańcuchów poprzez internowanie.

Odnośnie złej prasy:String intern jest implementowany metodą rodzimą. A implementacja C wykorzystuje stały rozmiar około 1k wpisów i bardzo słabo skaluje się dla dużej liczby ciągów.Java 6 przechowuje internowane łańcuchy w Perm gen. A zatem nie są GC'd i prawdopodobnie prowadzą do błędów w genach. Wiem, że jest to naprawione w java 7, ale nie mogę uaktualnić do Java 7.Dlaczego muszę korzystać z interingu?Moja aplikacja to aplikacja serwerowa z wielkością sterty 10-20G dla różnych wdrożeń.Podczas profilowania stwierdziliśmy, że setki tysięcy ciągów są duplikatami i możemy znacznie poprawić wykorzystanie pamięci, unikając przechowywania zduplikowanych łańcuchów.Pamięć była dla nas wąskim gardłem i dlatego kierujemy ją raczej niż przedwczesną optymalizację.

questionAnswers(1)

yourAnswerToTheQuestion