La mia applicazione utilizza molta più memoria di quanto suppongo utilizzi e sto cercando di capire quale classe utilizza una grande quantità di memoria e forse non rilasciandolo.Campionatore di memoria Java VisualVM: come ottenere le dimensioni di una classe specifica
Sto usando VisualVM e nel campionatore di memoria posso vedere che la maggior parte della memoria è speso per Char, Stringhe e Byte, tutte le mie classi usano stringhe, ma come sapete VisualVM mostra TUTTI i caratteri e le stringhe nel sistema (tutti i caratteri sono identici alle stringhe che rende difficile capire chi li trattiene), perché ho capito che la dimensione delle altre classi che contengono queste stringhe è calcolata senza le stringhe.
Come posso vedere in questo strumento chi sono le classi "reali" più grandi - quelle che contengono tutte queste stringhe? (preferibilmente se riesco a passare da queste classi alle loro stringhe e non viceversa) Ho cercato di usare la "radice del GC più vicino" nell'heapDump ma ci sono circa 4.000.000 di stringhe quindi la possibilità di trovare la "problematica" "quelli è molto piccolo ...
Grazie !!!
Penso che non si possa dire con esattezza quale classe utilizza quanta memoria. Se stai istanziando l'oggetto di un'altra classe in una classe diversa, come faresti a riguardo? Anche a mia conoscenza non è possibile ottenere un utilizzo meomory basato su classi. – Johnydep