JVM Code-Source Index for Class Loading Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In complex Java Virtual Machine (JVM) environments, class loading processes are inefficient due to the non-discriminate querying of ancestor class loaders and code-sources, leading to unnecessary time and resource wastage in locating specific code-sources during class loading events.

Innovation Solution

A method and system for automated code-source indexing, which includes a code-source index associated with class loaders in the JVM environment, allowing for cross-referencing packages to code-sources and utilizing a mapper to map packages to potentially accessible code-sources, thereby reducing the time spent on class loading by eliminating unnecessary queries.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If non-discriminate querying of ancestor class loaders and code-sources is performed during class loading, then comprehensive class search coverage is achieved, but time and resource consumption increases significantly

Engineering Contradiction:
Improveclass search coverageVSAvoidclass loading time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by creating and maintaining a code-source index that pre-stores the mapping relationships between packages and code-sources before class loading occurs. This index is built in advance and updated dynamically as code-sources are added or removed, allowing the class loader to quickly determine which code-sources may contain the requested class without performing exhaustive searches through all ancestor class loaders and code-sources during the actual class loading process.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If exhaustive search through all code-sources is performed, then complete class location capability is ensured, but system resources are wasted on querying code-sources that cannot load the class

Engineering Contradiction:
Improveclass location capabilityVSAvoidsystem resource consumption
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The patent extracts the package-to-code-source mapping information from the class loading process and stores it separately in a code-source index. This extraction allows the system to query only the relevant code-sources identified by the index, rather than exhaustively searching through all code-sources. The index acts as a filtering mechanism that separates necessary queries from unnecessary ones, reducing system resource consumption while maintaining complete class location capability.

Inventive Principle:
Principle #2Taking out (Extraction)

3Adaptability or versatility

If dynamic class generation and extensibility are supported through class loaders, then Java language flexibility is enhanced, but class loading complexity increases

Engineering Contradiction:
Improvelanguage extensibilityVSAvoidclass loading complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces a code-source index as an intermediary component between the class loader and the code-sources. This index simplifies the class loading process by providing a pre-computed mapping that guides the class loader to the appropriate code-sources, reducing the complexity of managing dynamic class generation and extensibility. The intermediary index handles the complexity of tracking multiple code-sources and their package contents, allowing the class loader to focus on its core function of loading classes.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS8332835B2Method and system for automated code-source indexing in java virtual machine environment
Publication Date: 2012.12.11 ORACLE INT CORP
  • US8332835B2 patent drawing
  • US8332835B2 patent drawing
  • US8332835B2 patent drawing

AI summary

A method and system for class loading in a Java Virtual Machine (JVM) environment. Specifically, the system includes a code-source index and a mapper. The code-source index is associated with at least one class loader in a class loader tree in the JVM environment. The code-source index includes a plurality of parameters for cross-referencing packages in the at least one class loader to code-sources. The system also includes a mapper for referencing the code-source index. That is, the mapper maps a package associated with a class to one or more associated code-sources that potentially can access the class in the class loader tree.