skip to main content
10.1145/2414740.2414747acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

The JVM is not observable enough (and what to do about it)

Published: 21 October 2012 Publication History

Abstract

Bytecode instrumentation is a preferred technique for building profiling, debugging and monitoring tools targeting the Java Virtual Machine (JVM), yet is fundamentally dangerous. We illustrate its dangers with several examples gathered while building the DiSL instrumentation framework. We argue that no Java platform mechanism provides simultaneously adequate performance, reliability and expressiveness, but that this weakness is fixable. To elaborate, we contrast internal with external observation, and sketch some approaches and requirements for a hybrid mechanism.

References

[1]
E. E. Aftandilian, S. Z. Guyer, M. Vechev, and E. Yahav. Asynchronous assertions. In Proc. OOPSLA'11. ACM.
[2]
P. Bothner. Compiling Java with GCJ. Linux Journal, 2003.
[3]
B. M. Cantrill, M. W. Shapiro, and A. H. Leventhal. Dynamic instrumentation of production systems. In Proc. USENIX ATEC'04. USENIX Association.
[4]
G. Czajkowski and L. Daynés. Multitasking without compromise: a virtual machine evolution. In Proc. OOPSLA'01. ACM.
[5]
N. Geoffray. Fostering Systems Research with Managed Runtimes. PhD thesis, Paris, France, September 2009.
[6]
Y.-G. Gueheneuc, R. Douence, and N. Jussien. No Java without Caffeine: A tool for dynamic analysis of Java programs. In Proc. ASE'02. IEEE, 2002.
[7]
G. C. Hunt and J. R. Larus. Singularity: rethinking the software stack. SIGOPS Oper. Syst. Rev., 41(2):37--49, Apr. 2007.
[8]
S. Kell and C. Irwin. Virtual machines should be invisible. In Proc. VMIL'11, SPLASH''11 Workshops. ACM.
[9]
C. Lattner and V. Adve. LLVM: A compilation framework for lifelong program analysis & transformation. In Proc. CGO'04. IEEE Computer Society, IEEE.
[10]
S. Liang and D. Viswanathan. Comprehensive profiling support in the Java virtual machine. In Proc. COOTS'99, COOTS'99, Berkeley, CA, USA. USENIX Association.
[11]
L. Marek, A. Villazón, Y. Zheng, D. Ansaloni, W. Binder, and Z. Qi. DiSL: a domain-specific language for bytecode instrumentation. In Proc. AOSD'12. ACM.
[12]
P. Moret, W. Binder, and E. Tanter. Polymorphic bytecode instrumentation. In Proc. AOSD'10. ACM.
[13]
S. Nagarakatte, J. Zhao, M. M. Martin, and S. Zdancewic. Softbound: highly compatible and complete spatial memory safety for C. In Proc. PLDI'09. ACM.
[14]
A. Popovici, T. Gross, and G. Alonso. Dynamic weaving for aspect-oriented programming. In Proc. AOSD'02. ACM.
[15]
Y. Saito. Jockey: a user-space library for record-replay debugging. In Proc. AADEBUG'05. ACM.
[16]
A. Sewe, M. Mezini, A. Sarimbekov, D. Ansaloni, W. Binder, N. Ricci, and S. Z. Guyer. new Scala() instance of Java: a comparison of the memory behaviour of Java and Scala programs. In Proc. ISMM'12. ACM.

Cited By

View all
  • (2023)Instrumentation for RV: From Basic Monitoring to Advanced Use CasesRuntime Verification10.1007/978-3-031-44267-4_23(403-427)Online publication date: 1-Oct-2023
  • (2023)Large‐scale characterization of Java streamsSoftware: Practice and Experience10.1002/spe.321353:9(1763-1792)Online publication date: 5-Jun-2023
  • (2022)Characterizing Java Streams in the Wild2022 26th International Conference on Engineering of Complex Computer Systems (ICECCS)10.1109/ICECCS54210.2022.00025(143-152)Online publication date: Mar-2022
  • Show More Cited By

Index Terms

  1. The JVM is not observable enough (and what to do about it)

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    VMIL '12: Proceedings of the sixth ACM workshop on Virtual machines and intermediate languages
    October 2012
    66 pages
    ISBN:9781450316330
    DOI:10.1145/2414740
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 21 October 2012

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. DiSL
    2. JPDA
    3. JVMTI
    4. bytdebuggers
    5. bytecode
    6. dynamic analysis
    7. instrumentation
    8. profilers

    Qualifiers

    • Research-article

    Conference

    SPLASH '12
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 4 of 4 submissions, 100%

    Upcoming Conference

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)8
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 05 Mar 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)Instrumentation for RV: From Basic Monitoring to Advanced Use CasesRuntime Verification10.1007/978-3-031-44267-4_23(403-427)Online publication date: 1-Oct-2023
    • (2023)Large‐scale characterization of Java streamsSoftware: Practice and Experience10.1002/spe.321353:9(1763-1792)Online publication date: 5-Jun-2023
    • (2022)Characterizing Java Streams in the Wild2022 26th International Conference on Engineering of Complex Computer Systems (ICECCS)10.1109/ICECCS54210.2022.00025(143-152)Online publication date: Mar-2022
    • (2021)Methodological Principles for Reproducible Performance Evaluation in Cloud ComputingIEEE Transactions on Software Engineering10.1109/TSE.2019.292790847:8(1528-1543)Online publication date: 1-Aug-2021
    • (2020)HSPJournal of Systems and Software10.1016/j.jss.2019.110430159:COnline publication date: 1-Jan-2020
    • (2019)Analysis and Optimization of Task Granularity on the Java Virtual MachineACM Transactions on Programming Languages and Systems10.1145/333849741:3(1-47)Online publication date: 16-Jul-2019
    • (2019)Optimization coaching for fork/join applications on the Java virtual machineCompanion Proceedings of the 3rd International Conference on the Art, Science, and Engineering of Programming10.1145/3328433.3328441(1-3)Online publication date: 1-Apr-2019
    • (2019)Renaissance: benchmarking suite for parallel applications on the JVMProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314637(31-47)Online publication date: 8-Jun-2019
    • (2018)Understanding task granularity on the JVM: profiling, analysis, and optimizationCompanion Proceedings of the 2nd International Conference on the Art, Science, and Engineering of Programming10.1145/3191697.3191724(54-56)Online publication date: 9-Apr-2018
    • (2018)lpt: A Tool for Tuning the Level of Parallelism of Spark Applications2018 25th Asia-Pacific Software Engineering Conference (APSEC)10.1109/APSEC.2018.00080(633-637)Online publication date: Dec-2018
    • Show More Cited By

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media