6

Proprio oggi ho scoperto perdite di memoria nella mia app con un gran numero di oggetti creati come classi anonime. Era un classico esempio che ogni oggetto aveva la propria classe definita e messa in un heap.Come trovare le radici GC delle classi anonime in java?

Non è stato semplice trovare nel profiler della memoria di runtime e l'analisi heap dump effettuata da Eclipse Memory Analyzer non è stata di aiuto.

Mi chiedevo come registrare tutte le classi anonime create in runtime con ID fil (o almeno genitore di classi genitore).

Penso che questa sola cosa renderebbe banale la ricerca della causa principale.

risposta

1

Non sono sicuro che elencare tutte le classi anonime ti porterà ovunque, in genere ce ne sono molte.

Quello che probabilmente serve è la logica per cercare istanze di classi che sono mantenute da riferimenti di classi interne (che includono classi anonime).

In JProfiler, v'è un controllo corrispondente:

enter image description here

Scopo impostare creare dall'ispezione contiene tutti questi casi ed è possibile poi mostrare un percorsi di una radice GC:

enter image description here

Disclaimer: La mia azienda sviluppa JProfiler.

Problemi correlati