  This paper analyzes the phenomenon of software aging - namely, the gradual
performance degradation and resource exhaustion in the long run - in the
Android OS. The study intends to highlight if, and to what extent, devices from
different vendors, under various usage conditions and configurations, are
affected by software aging and which parts of the system are the main
contributors. The results demonstrate that software aging systematically
determines a gradual loss of responsiveness perceived by the user, and an
unjustified depletion of physical memory. The analysis reveals differences in
the aging trends due to the workload factors and to the type of running
applications, as well as differences due to vendors' customization. Moreover,
we analyze several system-level metrics to trace back the software aging
effects to their main causes. We show that bloated Java containers are a
significant contributor to software aging, and that it is feasible to mitigate
aging through a micro-rejuvenation solution at the container level.
