{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,2]],"date-time":"2026-05-02T06:43:44Z","timestamp":1777704224662,"version":"3.51.4"},"reference-count":56,"publisher":"SAGE Publications","issue":"3","license":[{"start":{"date-parts":[[2018,7,5]],"date-time":"2018-07-05T00:00:00Z","timestamp":1530748800000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/journals.sagepub.com\/page\/policies\/text-and-data-mining-license"}],"content-domain":{"domain":["journals.sagepub.com"],"crossmark-restriction":true},"short-container-title":["Journal of Intelligent &amp; Fuzzy Systems"],"published-print":{"date-parts":[[2018,10]]},"abstract":"<jats:p>Android systems typically run on resource-constrained hand-hold devices. How to efficiently utilize Java heaps is one of the most important issues of concerns to the developers. Developers often use profilers to observe the utilization efficiency of Java objects, hoping to find out memory allocation bottlenecks, identify and solve problems such as memory leaks, etc. However, currently there lacks a low-overhead and efficient Java object profiler on Android and its Java virtual machines.<\/jats:p>\n                  <jats:p>In this paper, we design and implement a novel and low-overhead Java object profiler based on the Address-Chain technique, on Android 6.0 and its ART virtual machine, which uses an AOT (ahead-of-time) compiler and has complex garbage collection algorithms. Our profiler records the allocation site, the class information of the object, the object size, the birth time and death time of the object, the physical memory trace of the object movements with time stamps, the last access time and the access regular pattern, etc., for every Java object. The data profiled can help the developers to detect memory leaks, implement optimizations like pretenuring and tune the performance of garbage collector, etc.<\/jats:p>\n                  <jats:p>The Java object profiling mechanism proposed in this paper has low execution time overhead, imposes no overhead on the Java heap and does not modify any existing key data structure of the ART Virtual Machine, including the object layouts, class layouts and any others. By caching object access event in global register and removing redundant instrumentation, on Nexus7 and Android 6.0, the read\/write barriers overheads of the profiler are about 19% on average for EEMBC, SciMark and other workloads. The I\/O overheads are about 28% and the total execution overheads are about 51% on average.<\/jats:p>","DOI":"10.3233\/jifs-169655","type":"journal-article","created":{"date-parts":[[2018,7,6]],"date-time":"2018-07-06T12:05:09Z","timestamp":1530878709000},"page":"2997-3009","update-policy":"https:\/\/doi.org\/10.1177\/sage-journals-update-policy","source":"Crossref","is-referenced-by-count":0,"title":["A low-overhead and efficient Java object profiler on ART virtual machine"],"prefix":"10.1177","volume":"35","author":[{"given":"Fei","family":"Wang","sequence":"first","affiliation":[{"name":"State Key Laboratory of Software Development Environment, School of Computer Science and Engineering, Beihang University, Beijing, China"}]},{"given":"Xiaohua","family":"Shi","sequence":"additional","affiliation":[{"name":"State Key Laboratory of Software Development Environment, School of Computer Science and Engineering, Beihang University, Beijing, China"}]},{"given":"Xinghai","family":"Lu","sequence":"additional","affiliation":[{"name":"State Key Laboratory of Software Development Environment, School of Computer Science and Engineering, Beihang University, Beijing, China"}]}],"member":"179","published-online":{"date-parts":[[2018,7,5]]},"reference":[{"key":"e_1_3_2_2_2","first-page":"145","article-title":"Aspect-Droid: Android App Analysis System[C]","author":"Ali-Gombe A.","year":"2016","unstructured":"A.Ali-Gombe, I.Ahmed, RichardG.G.III, et alAspect-Droid: Android App Analysis System[C], Proceedings of the Sixth ACM Conference on Data and Application Security and Privacy, ACM, (2016), pp. 145\u2013147.","journal-title":"Proceedings of the Sixth ACM Conference on Data and Application Security and Privacy, ACM"},{"key":"e_1_3_2_3_2","doi-asserted-by":"publisher","DOI":"10.1145\/640128.604155"},{"key":"e_1_3_2_4_2","doi-asserted-by":"publisher","DOI":"10.1145\/1180475.1180477"},{"key":"e_1_3_2_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/2499370.2462186"},{"key":"e_1_3_2_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/1168917.1168866"},{"key":"e_1_3_2_7_2","doi-asserted-by":"publisher","DOI":"10.1145\/1449955.1449774"},{"key":"e_1_3_2_8_2","doi-asserted-by":"publisher","DOI":"10.1145\/2528521.1508277"},{"key":"e_1_3_2_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/773473.178257"},{"key":"e_1_3_2_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/2555670.2466485"},{"key":"e_1_3_2_11_2","unstructured":"CaffeineMark 3.0 [Online]. Available: ."},{"key":"e_1_3_2_12_2","doi-asserted-by":"publisher","DOI":"10.1109\/GCCE.2014.7031343"},{"key":"e_1_3_2_13_2","first-page":"77","article-title":"Detecting anomalous energy consumption in android applications[C]","author":"Couto M.","year":"2014","unstructured":"M.Couto, T.Car\u00c3\u011faoJ.Cunha, et al., Detecting anomalous energy consumption in android applications[C], Brazilian Symposium on Programming Languages, Springer International Publishing, (2014), pp. 77\u201391.","journal-title":"Brazilian Symposium on Programming Languages"},{"key":"e_1_3_2_14_2","unstructured":"DeltaBlue [Online]. Available: https:\/\/github.com\/xxgreg\/ deltablue"},{"key":"e_1_3_2_15_2","unstructured":"EEMBC [Online]. Available: ."},{"key":"e_1_3_2_16_2","first-page":"37","article-title":"Perfblower: Quickly detecting memory-related performance problems via amplification[C]","author":"Fang L.","year":"2015","unstructured":"L.Fang, L.Dou and G.Xu, Perfblower: Quickly detecting memory-related performance problems via amplification[C], LIPIcs-Leibniz International Proceedings in Informatics. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik2015, 37.","journal-title":"LIPIcs-Leibniz International Proceedings in Informatics"},{"key":"e_1_3_2_17_2","doi-asserted-by":"publisher","DOI":"10.1145\/1133651.1133654"},{"key":"e_1_3_2_18_2","unstructured":"HPROF Viewer 2016. [Online]. Available: https:\/\/developer.android.com\/studio\/profile\/am-hprof.html"},{"key":"e_1_3_2_19_2","doi-asserted-by":"publisher","DOI":"10.1145\/2771783.2771803"},{"key":"e_1_3_2_20_2","unstructured":"JProbe 2016. [Online]. Available: https:\/\/marketplace.eclipse.org\/content\/jprobe"},{"key":"e_1_3_2_21_2","unstructured":"Jprofiler 2016. [Online]. Available:https:\/\/www.ej-technologies.com\/products\/jprofiler\/overview.html"},{"key":"e_1_3_2_22_2","doi-asserted-by":"publisher","DOI":"10.1145\/2568225.2568311"},{"key":"e_1_3_2_23_2","doi-asserted-by":"publisher","DOI":"10.1145\/2568225.2568307"},{"key":"e_1_3_2_24_2","first-page":"3","article-title":"Androtrace: framework for tracing and analyzing IOs on Android[C]","author":"Lim E.","year":"2015","unstructured":"E.Lim, S.Lee and Y.Won, Androtrace: framework for tracing and analyzing IOs on Android[C], Proceedings of the 3rd Workshop on Interactions of NVM\/FLASH with Operating Systems and Workloads, ACM2015, p. 3.","journal-title":"Proceedings of the 3rd Workshop on Interactions of NVM\/FLASH with Operating Systems and Workloads, ACM"},{"key":"e_1_3_2_25_2","doi-asserted-by":"publisher","DOI":"10.1145\/949343.949333"},{"key":"e_1_3_2_26_2","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2010.7"},{"key":"e_1_3_2_27_2","doi-asserted-by":"publisher","DOI":"10.1145\/1297105.1297046"},{"key":"e_1_3_2_28_2","doi-asserted-by":"publisher","DOI":"10.1145\/1809028.1806618"},{"key":"e_1_3_2_29_2","doi-asserted-by":"publisher","DOI":"10.1145\/2775054.2694345"},{"key":"e_1_3_2_30_2","doi-asserted-by":"publisher","DOI":"10.1145\/1543135.1542521"},{"key":"e_1_3_2_31_2","doi-asserted-by":"publisher","DOI":"10.1145\/1837854.1736014"},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.1145\/2189750.2150993"},{"key":"e_1_3_2_33_2","doi-asserted-by":"publisher","DOI":"10.1145\/1321631.1321661"},{"key":"e_1_3_2_34_2","doi-asserted-by":"publisher","DOI":"10.1145\/2093157.2093178"},{"key":"e_1_3_2_35_2","doi-asserted-by":"publisher","DOI":"10.1145\/2555670.2466484"},{"key":"e_1_3_2_36_2","doi-asserted-by":"publisher","DOI":"10.1145\/1375634.1375651"},{"key":"e_1_3_2_37_2","unstructured":"SciMark 2.0 [Online]. Available: http:\/\/math.nist.gov\/scimark2\/"},{"key":"e_1_3_2_38_2","doi-asserted-by":"publisher","DOI":"10.1145\/1852761.1852767"},{"key":"e_1_3_2_39_2","first-page":"408","article-title":"Profiling java objects without overhead in java heaps[C]","author":"Shi X.","year":"2014","unstructured":"X.Shi, J.Xie and H.Yu, Profiling java objects without overhead in java heaps[C], Asian Symposium on Programming Languages and Systems, Springer International Publishing, 2014, pp. 408\u2013427","journal-title":"Asian Symposium on Programming Languages and Systems"},{"key":"e_1_3_2_40_2","first-page":"19","article-title":"BehaviorDroid: monitoring Android applications[C]","author":"Silva A.","year":"2016","unstructured":"A.Silva and J.Simmonds, BehaviorDroid: monitoring Android applications[C], Proceedings of the International Workshop on Mobile Software Engineering and Systems, ACM2016, 19\u201320.","journal-title":"Proceedings of the International Workshop on Mobile Software Engineering and Systems, ACM"},{"key":"e_1_3_2_41_2","doi-asserted-by":"publisher","DOI":"10.1145\/2544375.2544379"},{"key":"e_1_3_2_42_2","first-page":"307","article-title":"LeakSurvivor: Towards safely tolerating memory leaks for garbage-collected languages[C]","author":"Tang Y.","year":"2008","unstructured":"Y.Tang, Q.Gao and F.Qin, LeakSurvivor: Towards safely tolerating memory leaks for garbage-collected languages[C], USENIX 2008 Annual Technical Conference, USENIX Association, (2008), 307\u2013320.","journal-title":"USENIX 2008 Annual Technical Conference, USENIX Association"},{"key":"e_1_3_2_43_2","first-page":"762","article-title":"Relda2: an effective static analysis tool for resource leak detection in Android apps[C]","author":"Wu T.","year":"2016","unstructured":"T.Wu, J.Liu, X.Denget al., Relda2: an effective static analysis tool for resource leak detection in Android apps[C], Proceedings of the 31st IEEE\/ACM International Conference on Automated Software Engineering, ACM2016, pp. 762\u2013767.","journal-title":"Proceedings of the 31st IEEE\/ACM International Conference on Automated Software Engineering, ACM"},{"key":"e_1_3_2_44_2","first-page":"151","article-title":"Precise memory leak detection for java software using container profiling[C]","author":"Xu G.","year":"2008","unstructured":"G.Xu and A.Rountev, Precise memory leak detection for java software using container profiling[C], 2008 ACM\/IEEE 30th International Conference on Software Engineering, IEEE2008, 151\u2013160.","journal-title":"2008 ACM\/IEEE 30th International Conference on Software Engineering, IEEE"},{"key":"e_1_3_2_45_2","doi-asserted-by":"publisher","DOI":"10.1145\/1809028.1806616"},{"key":"e_1_3_2_46_2","doi-asserted-by":"publisher","DOI":"10.1145\/1882362.1882448"},{"key":"e_1_3_2_47_2","doi-asserted-by":"publisher","DOI":"10.1145\/1809028.1806617"},{"key":"e_1_3_2_48_2","doi-asserted-by":"publisher","DOI":"10.1145\/1993316.1993530"},{"key":"e_1_3_2_49_2","doi-asserted-by":"publisher","DOI":"10.1145\/2398857.2384690"},{"key":"e_1_3_2_50_2","doi-asserted-by":"publisher","DOI":"10.1145\/2544173.2509512"},{"key":"e_1_3_2_51_2","doi-asserted-by":"publisher","DOI":"10.1145\/2560047"},{"key":"e_1_3_2_52_2","doi-asserted-by":"publisher","DOI":"10.1145\/2581122.2544151"},{"key":"e_1_3_2_53_2","first-page":"89","article-title":"Static control-flow analysis of user-driven callbacks in Android applications[C]","author":"Yang S.","year":"2015","unstructured":"S.Yang, D.Yan, H.Wuet al., Static control-flow analysis of user-driven callbacks in Android applications[C], Proceedings of the 37th International Conference on Software Engineering-Volume 1 IEEE Press, 2015, pp. 89\u201399.","journal-title":"Proceedings of the 37th International Conference on Software Engineering-Volume 1 IEEE Press"},{"key":"e_1_3_2_54_2","unstructured":"YourKit 2016. [Online]. Available: https:\/\/www.yourkit.com"},{"key":"e_1_3_2_55_2","doi-asserted-by":"publisher","DOI":"10.1109\/SCAM.2015.7335414"},{"key":"e_1_3_2_56_2","doi-asserted-by":"publisher","DOI":"10.1145\/2896921.2896932"},{"key":"e_1_3_2_57_2","unstructured":"B.Zorn Barrier methods for garbage collection[M]. Boulder: Department of Computer Science University of Colorado 1990."}],"container-title":["Journal of Intelligent &amp; Fuzzy Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/journals.sagepub.com\/doi\/pdf\/10.3233\/JIFS-169655","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/journals.sagepub.com\/doi\/full-xml\/10.3233\/JIFS-169655","content-type":"application\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/journals.sagepub.com\/doi\/pdf\/10.3233\/JIFS-169655","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,4,29]],"date-time":"2026-04-29T09:40:44Z","timestamp":1777455644000},"score":1,"resource":{"primary":{"URL":"https:\/\/journals.sagepub.com\/doi\/10.3233\/JIFS-169655"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,7,5]]},"references-count":56,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2018,10]]}},"alternative-id":["10.3233\/JIFS-169655"],"URL":"https:\/\/doi.org\/10.3233\/jifs-169655","relation":{},"ISSN":["1064-1246","1875-8967"],"issn-type":[{"value":"1064-1246","type":"print"},{"value":"1875-8967","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018,7,5]]}}}