He visto muchos ejemplos primitivos que describen cómo funciona String Intern(), pero aún no he visto un caso de uso de la vida real que se beneficie de ello.Vida real, ejemplo práctico de utilizar String.intern() en Java?
La única situación que puedo soñar es tener un servicio web que recibe una cantidad considerable de solicitudes, cada una de naturaleza muy similar debido a un esquema rígido. Al internar() los nombres de los campos de solicitud en este caso, el consumo de memoria puede reducirse significativamente.
¿Alguien puede proporcionar un ejemplo de uso de intern() en un entorno de producción con gran éxito? ¿Tal vez un ejemplo de ello en una popular oferta de código abierto?
Editar: me refiero a la internación manual, no la internación garantizado de literales de cadena, etc.
Esto es cierto, pero hay muchas excepciones a esta generalización: - Si las probabilidades de que sus cadenas tengan la misma longitud son mínimas, y el número de cadenas que posiblemente sea interno() 'es alto , uno podría argumentar que dado que equals() hace una verificación de tamaño primero, se expone innecesariamente a las excepciones OOM de PermGen. –
Tienes razón, pero para el rendimiento tienes O (n) para iguales y O (1) para '=='. Estoy de acuerdo, que el peor de los casos solo ocurre si ambas cadenas tienen el mismo tamaño y solo difieren en el último char. Lo cual es usualmente un caso bastante raro. –
La respuesta es incorrecta. Lo primero que hace String.equals es verificar la igualdad de referencia antes de verificar la igualdad semántica. Entonces, para dos cadenas internalizadas == y .equals son, bueno, iguales ... – PaulJWilliams