Dynamic class loading in the Java virtual machine
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Quicksilver: a quasi-static compiler for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A framework for efficient reuse of binary code in Java
ICS '01 Proceedings of the 15th international conference on Supercomputing
Multitasking without comprimise: a virtual machine evolution
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Java Language Specification, Second Edition: The Java Series
Java Language Specification, Second Edition: The Java Series
Supporting Binary Compatibility with Static Compilation
Proceedings of the 2nd Java Virtual Machine Research and Technology Symposium
Code Sharing among Virtual Machines
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Dynamically Loaded Classes as Shared Libraries: An Approach to Improving Virtual Machine Scalability
IPDPS '03 Proceedings of the 17th International Symposium on Parallel and Distributed Processing
Building a Java virtual machine for server applications: the Jvm on 0S/390
IBM Systems Journal
ATEC '03 Proceedings of the annual conference on USENIX Annual Technical Conference
Scaling J2EE™ application servers with the Multi-tasking Virtual Machine
Software—Practice & Experience - Research Articles
Task-aware garbage collection in a multi-tasking virtual machine
Proceedings of the 5th international symposium on Memory management
A microkernel virtual machine:: building security with clear interfaces
Proceedings of the 2006 workshop on Programming languages and analysis for security
Towards Dynamic Component Isolation in a Service Oriented Platform
CBSE '09 Proceedings of the 12th International Symposium on Component-Based Software Engineering
VMKit: a substrate for managed runtime environments
Proceedings of the 6th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Hi-index | 0.00 |
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.