I am sure you all remember the days when your freshly booted Windows was running just fine. But in just a few days it became so sluggish that the only solution was a reboot. And in a year or so you needed a clean install, because reboots did not help you any longer. 

This concept is known as Software aging which refers to progressive performance degradation or a sudden hang/crash of a software system due to exhaustion of operating system resources, fragmentation and accumulation of errors.

Common reasons why your application might suffer from the aging problems include 

  • Memory leaks
  • Lock contention issues 
  • Unreleased file handles 
  • Memory/swap space bloat 
  • Data corruption 
  • Storage space fragmentation 
  • Round off error accumulation 

... and more. See the samples about the aforementioned causes in the Java applications from the original blog post.