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.