Mi aplicación usa mucha más memoria de la que creo que debería usar, y estoy tratando de entender qué clase está usando una gran cantidad de la memoria y tal vez no lo libere.Muestra de memoria Java VisualVM - cómo obtener el tamaño de una clase específica
Estoy usando VisualVM y en la muestra de memoria puedo ver que la mayor parte de la memoria se usa en Chars, Strings y Bytes, todas mis clases usan Strings, pero como usted sabe, VisualVM muestra TODO Chars y Strings en el sistema (todas las Caracteres son idénticas a las Cadenas, lo que hace difícil entender quién las tiene), ya que entiendo que el tamaño de las otras clases que contienen estas cadenas se calcula sin las cadenas.
¿Cómo puedo ver en esta herramienta cuáles son las clases más grandes "reales", las que tienen todas estas cadenas? (preferiblemente si puedo obtener de estas clases a sus cadenas y no al revés) Traté de usar la "raíz para el GC más cercano" en la pila de heap, pero hay alrededor de 4.000.000 cadenas, por lo que la posibilidad de encontrar la "problemática" "unos es muy pequeño ...
Gracias !!!
Creo que no se puede decir explícitamente qué clase usa la cantidad de memoria. Si estás instanciando el objeto de otra clase en alguna clase diferente, ¿cómo lo harías? También que yo sepa, no se puede obtener una utilización de memografía basada en la clase. – Johnydep