Come si verificano i memory leak in Java

Monday, Sep 10, 2018| Tags: java, garbage collector, advanced programming, leak diagnosing, memory leak, tricks, programmazione

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() e 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… 🙂

SO WHAT DO YOU THINK?

Fancy a successful project? Result oriented, deep technical knowledge and business attitude. I can be the perfect man for you.

Contact me