Skip to main content
Log in

A comprehensive study on software aging across android versions and vendors

  • Published:
Empirical Software Engineering Aims and scope Submit manuscript

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Listing 1
Listing 2
Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10

Similar content being viewed by others

Notes

  1. Computed with David A. Wheeler’s SLOCCount (Wheeler 2016) on the entire Android Open Source Project (AOSP) Nougat 24 (Android Open-Source Project 2017).

  2. For those applications requiring the user to login, we have manually configured them before the experiment, by signing up and activating the automatic login.

References

  • Alonso J, Torres J, Berral JL, Gavalda R (2010) Adaptive On-Line Software Aging Prediction based on Machine Learning. In: Dependable systems and networks (DSN), 2010, IEEE/IFIP International Conference on, IEEE, pp 507–516

  • Amalfitano D, Fasolino AR, Tramontana P, De Carmine S, Memon AM (2012) Using GUI ripping for automated testing of Android applications. In: Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering, ACM, pp 258–261

  • Android (2016) Developers - investigating your ram usage. https://developer.android.com/studio/profile/investigate-ram.html#LogMessages

  • Android (2018a) App startup time. https://developer.android.com/topic/performance/vitals/launch-time

  • Android (2018b) Developers - keeping your app responsive. https://developer.android.com/training/articles/perf-anr.html#Reinforcing

  • Android (2019a) Distribution dashboard - android developers. https://developer.android.com/about/dashboards

  • Android (2019b) UI/Application Exerciser Monkey. https://developer.android.com/studio/test/monkey

  • Android Central (2015) The HTC One series specs. https://www.androidcentral.com/htc-one-series-specs

  • Android Open-Source Project (2017) Android Open Source Project. https://source.android.com/

  • Andrzejak A, Eichler F, Ghanavati M (2017) Detection of memory leaks in C/C++ code via machine learning. In: 2017 IEEE International symposium on software reliability engineering workshops, ISSREW, IEEE, pp 252–258

  • Anscombe FJ (1948) The validity of comparative experiments. Journal of the royal statistical society series A (General) 111(3):181–211

    Article  MathSciNet  Google Scholar 

  • Araujo J, Alves V, Oliveira D, Dias P, Silva B, Maciel P (2013) An investigative approach to software aging in android applications. In: Systems, man, and cybernetics (SMC), 2013, IEEE International Conference on, IEEE, pp 1229–1234

  • Araujo J, Matos R, Alves V, Maciel P, Souza F, Trivedi KS, et al. (2014) Software aging in the eucalyptus cloud computing infrastructure: characterization and rejuvenation. ACM Journal on Emerging Technologies in Computing Systems (JETC) 10(1):11

    Google Scholar 

  • Bovenzi A, Cotroneo D, Pietrantuono R, Russo S (2011) Workload Characterization for Software Aging Analysis

  • Carrozza G, Cotroneo D, Natella R, Pecchia A, Russo S (2010) Memory leak analysis of mission-critical middleware. J Syst Softw 83(9):1556–1567

    Article  Google Scholar 

  • Cotroneo D, Grottke M, Natella R, Pietrantuono R, Trivedi KS (2013a) Fault triggers in open-source software: An experience report. In: Software Reliability Engineering (ISSRE), 2013 IEEE 24th International Symposium on, IEEE, pp 178–187

  • Cotroneo D, Orlando S, Pietrantuono R, Russo S (2013b) A measurement-based ageing analysis of the JVM. Software Testing, Verification and Reliability 23(3):199–239

    Article  Google Scholar 

  • Cotroneo D, Natella R, Pietrantuono R, Russo S (2014) A survey of software aging and rejuvenation studies. ACM Journal on Emerging Technologies in Computing Systems (JETC) 10(1):8

    Google Scholar 

  • Cotroneo D, Fucci F, Iannillo AK, Natella R, Pietrantuono R (2016) Software Aging Analysis of the Android Mobile OS. In: Proc. 27th IEEE Intl. Symp. Software Reliability Engineering (ISSRE)

  • Daniel WW (1990) Kruskal-wallis one-way analysis of variance by ranks. Applied Nonparametric Statistics, pp 226–234

  • Dohi T, Goseva-Popstojanova K, Trivedi KS (2000) Statistical non-parametric algorithms to estimate the optimal software rejuvenation schedule. In: Dependable Computing, 2000. Proceedings. 2000 Pacific Rim International Symposium on, IEEE, pp 77–84

  • Durbin J, Watson GS (1951) Testing for serial correlation in least squares regression. ii. Biometrika 38(1/2):159–177

    Article  MathSciNet  Google Scholar 

  • Fang L, Dou L (2015) Xu G (2015) perfblower: Quickly detecting memory-related performance problems via amplification. In: 29Th european conference on object-oriented programming (ECOOP)

  • Gallo R, Hong o P, Dahab R, Navarro LC, Kawakami H, Galvão K, Junqueira G, Ribeiro L (2015) Security and system architecture: Comparison of Android customizations. In: ACM WiSec, ACM, p 12

  • Garg S, Moorsel AV, Vaidyanathan K, Trivedi KS (1998) A Methodology for Detection and Estimation of Software Aging. In: Proc. of the 9th Intl. Symp. on Software Reliability Engineering (ISSRE)

  • Ghanavati M, Costa D, Seboek J, Lo D, Andrzejak A (2019) Memory and resource leak defects and their repairs in java projects. Empirical Software Engineering https://doi.org/10.1007/s10664-019-09731-8. https://doi.org/10.1007/s10664-019-09731-8

  • Grottke M, Trivedi K (2007) Fighting bugs: remove, retry, replicate, and rejuvenate. IEEE Computer 40(2):107–109

    Article  Google Scholar 

  • Grottke M, Li L, Vaidyanathan K, Trivedi KS (2006) Analysis of software aging in a web server. IEEE Trans Reliability 55(3):480–491

    Article  Google Scholar 

  • Grottke M, Nikora AP, Trivedi KS (2010) An empirical investigation of fault types in space mission system software. In: Dependable systems and networks (DSN), 2010, IEEE/IFIP International Conference on, IEEE, pp 447–456

  • Grottke M, Kim DS, Mansharamani R, Nambiar M, Natella R, Trivedi KS (2016) Recovery from software failures caused by mandelbugs. IEEE Trans Reliab 65(1):70–87

    Article  Google Scholar 

  • GSMArena (2019) Counterpoint: Huawei reaches all-time high market share in Q1 2019. https://www.gsmarena.com/counterpoint_huawei_reaches_alltime_high_market_share_in_q1_2019-news-36845.php

  • Hamed KH, Rao AR (1998) A modified mann-kendall trend test for autocorrelated data. J Hydrol 204(1-4):182–196

    Article  Google Scholar 

  • Huang Y, Kintala C, Kolettis N, Fulton ND (1995) software rejuvenation: analysis, module and applications. In: Fault-tolerant computing, 1995. FTCS-25. Digest of papers. Twenty-Fifth International Symposium on, IEEE, pp 381–390

  • Huo S, Zhao D, Liu X, Xiang J, Zhong Y, Yu H (2018) Using machine learning for software aging detection in Android system. In: 2018 Tenth international conference on advanced computational intelligence, ICACI, IEEE, pp 741–746

  • Iannillo AK, Natella R, Cotroneo D, Nita-Rotaru C (2017) Chizpurfle: A Gray-Box Android Fuzzer for Vendor Service Customizations. In: Proc. 28th IEEE Intl. Symp. Software Reliability Engineering (ISSRE)

  • Jump M, McKinley KS (2007) Cork: dynamic memory leak detection for garbage-collected languages. In: Acm sigplan notices, ACM, 42, pp 31–38

  • Kang Y, Zhou Y, Xu H, Lyu MR (2015) PersisDroid: Android Performance Diagnosis via Anatomizing Asynchronous Executions. arXiv preprint. 151207950

  • Li L, Bissyandé TF, Wang H, Klein J (2018) CiD: Automating the detection of API-related compatibility issues in Android apps. In: Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis, pp 153–163

  • Love R (2010) Linux Kernel Development. Pearson Education

  • Machida F, Xiang J, Tadano K, Maeno Y (2012) Aging-related bugs in cloud computing software.. In: Software Reliability Engineering Workshops (ISSREW), 2012 IEEE 23rd International Symposium on, IEEE, pp 287–292

  • Machida F, Andrzejak A, Matias R, Vicente E (2013) On the effectiveness of Mann-Kendall test for detection of software aging. In: 2013 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW)

  • Machida F, Xiang J, Tadano K, Maeno Y (2016) Lifetime extension of software execution subject to aging. IEEE Trans Reliab 66(1):123–134

    Article  Google Scholar 

  • Machiry A, Tahiliani R, Naik M (2013) Dynodroid: An input generation system for Android apps. In: Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering, ACM, pp 224–234

  • Mao K, Harman M, Jia Y (2016) Sapienz: Multi-objective automated testing for Android applications. In: Proceedings of the 25th International Symposium on Software Testing and Analysis, ACM, pp 94–105

  • Montgomery DC (2008) Design and analysis of experiments. John Wiley & Sons

  • Nagappan M, Zimmermann T, Bird C (2013) Diversity in software engineering research. In: Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering, ACM, pp 466–476

  • Nethercote N, Seward J (2007) Valgrind: a framework for heavyweight dynamic binary instrumentation. In: ACM Sigplan notices, ACM, 42, pp 89–100

  • Önöz B, Bayazit M (2003) The power of statistical tests for trend detection. Turkish Journal of Engineering and Environmental Sciences 27(4):247–251

    Google Scholar 

  • Pfening A, Garg S, Puliafito A, Telek M, Trivedi KS (1996) Optimal software rejuvenation for tolerating soft failures. Perform Eval 27:491–506

    Article  Google Scholar 

  • Pirie W (1988) Spearman rank correlation coefficient. Encyclopedia of statistical sciences

  • Qiao Y, Zheng Z, Qin F (2016) An Empirical study of software aging manifestations in Android. In: Software Reliability Engineering Workshops, ISSREW. 2016 IEEE International Symposium on

  • Qiao Y, Zheng Z, Fang Y (2018a) An empirical study on software aging indicators prediction in Android mobile. In: IEEE International symposium on software reliability engineering workshops, ISSREW, IEEE, PP 271–277

  • Qiao Y, Zheng Z, Fang Y, Qin F, Trivedi KS, Cai KY (2018b) Two-level rejuvenation for Android smartphones and its optimization. IEEE Transactions on Reliability 68(2):633–652

    Article  Google Scholar 

  • Qin F, Zheng Z, Li X, Qiao Y, Trivedi KS (2017) An empirical investigation of fault triggers in Android operating system. In: 2017 IEEE 22Nd pacific rim international symposium on dependable computing, PRDC, IEEE, pp 135–144

  • Scalabrino S, Bavota G, Linares-Vásquez M, Lanza M, Oliveto R (2019) Data-driven solutions to detect API compatibility issues in android: An empirical study. In: 2019 IEEE/ACM 16Th international conference on mining software repositories, MSR, IEEE, pp 288–298

  • Sen PK (1968) Estimates of the regression coefficient based on kendall’s tau. J Am Stat Assoc 63(324):1379–1389

    Article  MathSciNet  Google Scholar 

  • Serebryany K, Bruening D, Potapenko A, Vyukov D (2012) Addresssanitizer: A fast address sanity checker. In: Presented as part of the 2012 {USENIX} annual technical conference ({USENIX}{ATC}), 12, pp 309–318

  • Silva L, Madeira H, Silva J (2006) Software Aging and Rejuvenation in a SOAP-based Server. In: Proc. of the 5th IEEE Intl. Symp. on Network Computing and Applications (NCA), pp 56–65

  • Sor V, Treier T, Srirama SN (2013) Improving statistical approach for memory leak detection using machine learning. In: 2013 IEEE International Conference on Software Maintenance, IEEE, pp 544–547

  • Tanenbaum AS, Bos h (2014) Modern Operating Systems. Prentice Hall Press

  • Theil H (1992) A rank-invariant method of linear and polynomial regression analysis. In: Henri Theil’s Contributions to Economics and Econometrics, Springer, pp 345–381

  • Vaidyanathan K, Trivedi KS (2005) A comprehensive model for software rejuvenation. IEEE Transactions on Dependable and Secure Computing 2 (2):124–137

    Article  Google Scholar 

  • Wang Q, Wolter K (2015) Reducing task completion time in mobile offloading systems through online adaptive local restart. In: Proceedings of the 6th ACM/SPEC International Conference on Performance Engineering, ACM, pp 3–13

  • Wei L, Liu Y, Cheung SC (2016) Taming Android fragmentation: Characterizing and detecting compatibility issues for Android apps. In: Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, pp 226–237

  • Wei L, Liu Y, Cheung SC, Huang H, Lu X (2018) Understanding and detecting fragmentation-induced compatibility issues for Android apps. IEEE Transactions on Software Engineering, Liu X

  • Weng C, Xiang J, Xiong S, Zhao D, Yang C (2016) Analysis of software aging in android. In: Software reliability engineering workshops, ISSREW. 2016 IEEE International Symposium on

  • Weng C, Zhao D, Lu L, Xiang J, Yang C, Li D (2017) A rejuvenation strategy in Android. In: 2017 IEEE International symposium on software reliability engineering workshops, ISSREW, IEEE, pp 273–279

  • Wheeler D (2016) Sloccount. http://www.dwheeler.com/sloccount/

  • Wikipedia (2019) Google Nexus. https://en.wikipedia.org/wiki/Google_Nexus

  • Wu H, Wolter K (2015) Software aging in mobile devices: Partial computation offloading as a solution. In: Software reliability engineering workshops (ISSREW), 2015 IEEE International Symposium on, IEEE, pp 125–131

  • Wu L, Grace M, Zhou Y, Wu C, Jiang X (2013) The impact of vendor customizations on Android security. In: Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security, ACM, pp 623–634

  • Xiang J, Weng C, Zhao D, Tian J, Xiong S, Li L, Andrzejakb A (2018) A new software rejuvenation model for Android. In: 2018 IEEE International symposium on software reliability engineering workshops, ISSREW, IEEE, pp 293–299

  • Xu G, Rountev A (2008) Precise memory leak detection for Java software using container profiling. In: Proceedings of the 30th international conference on Software engineering, ACM, pp 151–160

  • Xu G, Rountev A (2010) Detecting inefficiently-used containers to avoid bloat. In: ACM Sigplan notices, ACM, 45, pp 160–173

  • Xu G, Rountev A (2013) Precise memory leak detection for Java software using container profiling. ACM Transactions on Software Engineering and Methodology (TOSEM) 22(3):17

    Article  Google Scholar 

  • Xu G, Bond MD, Qin F, Rountev A (2011) Leakchaser: Helping programmers narrow down causes of memory leaks. In: ACM SIGPLAN Notices, ACM, 46, pp 270–282

  • Zheng P, Qi Y, Zhou Y, Chen P, Zhan J, Lyu MR (2014) An Automatic Framework for Detecting and Characterizing Performance Degradation of Software Systems. Reliability, IEEE Transactions on 63(4):927–943

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Antonio Ken Iannillo.

Additional information

Communicated by: Forrest Shull

Publisher’s note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Cotroneo, D., Iannillo, A.K., Natella, R. et al. A comprehensive study on software aging across android versions and vendors. Empir Software Eng 25, 3357–3395 (2020). https://doi.org/10.1007/s10664-020-09838-3

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10664-020-09838-3

Keywords

Navigation