Come si verificano I memory leak in Java

Come si verificano I memory leak in Java

Qualche giorno fa ho letto un articolo molto interessante: “How Memory Leaks Happen in a Java Application”.

Uno dei vantaggi del linguaggio Java è quello di gestire la deallocazione degli oggetti in maniera automatica attraverso il “garage collector”. In particolari circostanze questa gestione può fallire e possono verificarsi dei memory leak.

In informatica, un memory leak (“perdita o fuoriuscita di memoria”) è un particolare tipo di consumo non voluto di memoria dovuto alla mancata deallocazione dalla stessa, di variabili/dati non più utilizzati da parte dei processi. (Wikipedia)

I memory leak non dipendono da una errata implementazione del garbage collector,  ma da un uso improprio degli oggetti costruiti dall’applicazione. È un classico problema di PEBCAK (Problem Exists Between Chair And Keyboard), ed è tra i più difficili da diagnosticare.

L’articolo che ho letto si trova qui: https://stackify.com/memory-leaks-java/

Anche per chi non conosce perfettamente l’inglese, risulta facilmente comprensibile. Ho chiesto all’autore l’autorizzazione a tradurlo e riportarlo sul sito.

Nel frattempo, vi invito a darvi un’occhiata.

Vengono trattati i seguenti punti:

  • cos’è un memory leak in Java
  • Java Heap Leaks
    • Riferimento a oggetti attraverso proprietà statiche
    • Chiamata a String.intern() su stringhe molto grandi
    • Stream non chiusi
    • Connessioni non chiuse
    • Aggiungere oggetti senza implementare hashCode()equals() in un HashSet
  • Come scovare cause di leaking nella tua applicazione
    • Gargage Collection con log verbose
    • Effettuare la profilazione
    • Revisionare il codice
  • Conclusioni

Buona lettura… 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *