Preview

Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS)

Advanced search

Dynamic Java program analysis using virtual machine modification

https://doi.org/10.15514/ISPRAS-2015-27(2)-2

Abstract

This article focuses on practical questions of performing program analysis for applications executed using interpreters and virtual machines. Using Dalvik virtual machine in Android operating system as target interpreter layer, we showcase the possibilities of program analysis through automatic execution data extraction and profiling. The article describes functional modifications for Dalvik virtual machine which allow generating extra statistics and data to be intercepted by a debugger client for further processing. We conclude with the brief overview of a set of experiments performed on a set of standard Android applications, identifying several memory usage trends; lastly, we discuss possible future improvements for the implemented system.

About the Authors

M. . Ermakov
Department of Computational Mathematics and Cybernethics, Moscow State University
Russian Federation


S. . Vartanov
Department of Computational Mathematics and Cybernethics, Moscow State University
Russian Federation


References

1. Stephen Kell, Danio Ansaloni, Walter Binder, Lukáš Marek. The JVM is not observable enough (and what to do about it). Proceedings of the sixth ACM workshop on Virtual machines and intermediate languages, 2012. pp. 33-38. doi: 10.1145/2414740.2414747

2. Dtrace for HotSpot VM (http://docs.oracle.com/javase/6/docs/technotes/guides/vm/dtrace.html) [HTML]. Retrieved: 24.06.2015.

3. YourKit Java Profiler tool overview (https://www.yourkit.com/features/) [HTML]. Retrieved: 30.06.2015.

4. JProfiler tool overview (https://www.ej technologies.com/products/jprofiler/overview.html) [HTML]. Retrieved: 30.06.2015.

5. Eclipse MAT project (https://eclipse.org/mat/) [HTML]. Retrieved: 30.06.2015.

6. hprof tool documentation (http://docs.oracle.com/javase/7/docs/technotes/samples/hprof.html) [HTML]. Retrieved: 30.06.2015.

7. JDWP protocol overview (https://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html) [HTML]. Retrieved: 23.06.2015.

8. DDMS tool overview (http://developer.android.com/tools/debugging/ddms.html) [HTML]. Retrieved: 30.06.2015.

9. Paul R. Wilson. Uniprocessor garbage collection techniques. Proceedings of the International Workshop on Memory Management, 1992. pp. 1-42.

10. ddmlib project online repository (https://android.googlesource.com/platform/tools/base/+/master/ddmlib/) [HTML]. Retrieved: 30.06.2015.

11. PandaBoard project overview (http://pandaboard.org/) [HTML]. Retrieved: 30.06.2015.


Review

For citations:


Ermakov M., Vartanov S. Dynamic Java program analysis using virtual machine modification. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2015;27(2):23-38. (In Russ.) https://doi.org/10.15514/ISPRAS-2015-27(2)-2



Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)