Sharing the Runtime Representation of Classes Across Class Loaders | SpringerLink
Skip to main content

Sharing the Runtime Representation of Classes Across Class Loaders

  • Conference paper
ECOOP 2005 - Object-Oriented Programming (ECOOP 2005)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 3586))

Included in the following conference series:

Abstract

One of the most distinctive features of the JavaTM programming language is the ability to specify class loading policies. Despite the popularity of class loaders, little has been done to reduce the cost associated with defining the same class by multiple loaders. In particular, implementations of the Java virtual machine (JVMTM) create a complete runtime representation of each class regardless of how many class loaders already define the same class. This lack of sharing leads to poor memory utilization and to replicated run-time work. Recent efforts achieve some degree of sharing only when dynamic binding behaves predictably across loaders. This limits sharing to class loaders whose behavior is fully controlled by the JVM. As a result applications that implement their own class loading policies cannot enjoy the benefit of sharing.

We present a novel technique for sharing the runtime representation of classes (including bytecodes and, under some conditions, compiled code) across arbitrary user-defined class loaders. We describe how our approach is applied to the multi-tasking virtual machine (MVM). The new multi-tasking virtual machine retains the fast start-up time of the original MVM while extending the scope of footprint savings to applications that exploit user-defined class loaders.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. http://java.sun.com/products/jsp

  2. http://www.jspwiki.org

  3. Arnold, J.: Shared Libraries on UNIX System V. In: Summer USENIX Conference, Atlanta, GA (1986)

    Google Scholar 

  4. Balfanz, D., Gong, L.: Experience with Secure Multi- Processing in Java. Technical Report 560-97, Department of Computer Science. Princeton University (September 1997)

    Google Scholar 

  5. Czajkowski, G., Daynès, L.: Multitasking without Compromise: A Virtual Machine Evolution. In: ACM OOPSLA 2001, Tampa, FL (october 2001)

    Google Scholar 

  6. Czajkowski, G., Daynès, L., Nystrom, N.: Code Sharing among Virtual Machines. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374. Springer, Heidelberg (2002)

    Google Scholar 

  7. Czajkowski, G., Daynès, L., Titzer, B.: A multi-user virtual machine. In: USENIX, San Antonio, TX (2003)

    Google Scholar 

  8. Dillenberger, D., Bordawekar, R., Clark, C.W., Durand, D., Emmes, D., Gohda, O., Howard, S., Oliver, M.F., Samuel, F., John, R.W.S.: Building a JavaTM Virtual Machine for Server Applications: The JVM on OS/390. IBM Systems Journal 39(1) (2000)

    Google Scholar 

  9. Free Software Foundation (FSF). GCJ: The GNU Compiler for Java (2003)

    Google Scholar 

  10. Gosling, J., Joy, B., Steele, G., Bracha, G.: The JavaTM Language Specification, 2nd edn., September 2000. The JavaTM Series. Addison Wesley, Reading (2000)

    Google Scholar 

  11. Java Community Process. JSR 121: Application Isolation API (2003)

    Google Scholar 

  12. Joisha, P.G., Midkiff, S.P., Serrano, M.J., Gupta, M.: A framework for efficient reuse of binary code in java. In: International Conference on Supercomputing, pp. 440–453 (2001)

    Google Scholar 

  13. Liang, S., Bracha, G.: Dynamic Class Loading in the Java Virtual Machine. In: ACM OOPSLA 1998 (october 1998)

    Google Scholar 

  14. Microsoft Corp. Programming with Application Domains and Assemblies (2005), http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconprogrammingwithapplicationdomainsassemblies.asp

  15. Serrano, M.J., Bordawekar, R., Midkiff, S.P., Gupta, M.: Quicksilver: a Quasi-Static Compiler for Java. In: ACM OOPSLA 2000 (october 2000)

    Google Scholar 

  16. Sun Microsystems Inc. The Java HotSpot Performance Engine Architecture (1999), http://java.sun.com/products/hotspot/whitepaper.html

  17. Sun Microsystems Inc. Class Data Sharing (2004), http://java.sun.com/j2se/1.5.0/docs/guide/vm/class-data-sharing.html

  18. US Department of Commerce. Secure hash standard (April 1995)

    Google Scholar 

  19. Wong, B., Czajkowski, G., Daynès, L.: Dynamically loaded classes as shared libraries. In: Proceedings of IEEE International Parallel and Distributed Processing Symposium (IPDPS), Nice, France (2003)

    Google Scholar 

  20. Yu, D., Shao, Z., Trifonov, V.: Supporting binary compatibility with static compilation. In: 2nd Java Virtual Machine Research and Technology Symposium (JVM 2002), pp. 165–180 (2002)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2005 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Daynès, L., Czajkowski, G. (2005). Sharing the Runtime Representation of Classes Across Class Loaders. In: Black, A.P. (eds) ECOOP 2005 - Object-Oriented Programming. ECOOP 2005. Lecture Notes in Computer Science, vol 3586. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11531142_5

Download citation

  • DOI: https://doi.org/10.1007/11531142_5

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-27992-1

  • Online ISBN: 978-3-540-31725-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics