En la máquina virtual Hotspot reciente, las cadenas internas se parecen a cualquier otra - la única diferencia es que la matriz virtual está siendo rastreada por la VM (pensé que tenía una referencia JNI adicional, pero no aparece en YourKit volcar - será interesante investigarlo).
Dicho esto, Yourkit proporciona una inspección de memoria para cadenas duplicadas, que creo que hace lo que necesita. Si lo combina con 'Trace Allocations', puede ir directamente al código que asignó estas cadenas.
Ver http://www.yourkit.com/docs/95/help/inspections_mem.jsp#duplicate_strings
-
lista de cadenas añadidas entre dos puntos en el tiempo rápido ha sido más fácil:
- Obtener dos de lixiviación en vertederos utilizando jmap o el perfilador favorito
- Do una diferencia de los montones
- Muestra todas las instancias de la clase String
Debe ser factible con cualquier generador de perfiles o incluso jhat (si es lo suficientemente paciente). Si usa YourKit, puede usar la función de marcador y tomar solo una instantánea de montón.
¿Qué IDE usas? –
@Ed Staub - Estoy usando eclipse en una computadora de ventana, pero estoy compilando con una hormiga en una computadora Linux y corriendo allí. ¿Porque lo preguntas? –
No estoy seguro de si esto es útil: puede poner un formateador de detalles del depurador en String que se mostrará si está internado, por ejemplo: '(this == this.intern())? ("^"+ ToString()): toString () '. ¿Puedes explicar para qué necesitas la herramienta? ¿Es porque confía en la prueba de igualdad, o está buscando en el uso de la memoria, o ... –