Immutable Object Management via Persistent Storage Caching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The construction of objects in computing systems is often a lengthy and time-consuming process, particularly when dealing with immutable objects, which can impact performance during deployment and restarts.

Innovation Solution

A method and system for managing immutable objects that monitor new object construction, determine a key for the object, and check if it exists in a persistent storage system. If found, the object is loaded; if not, it is constructed and stored in the system, ensuring immutability by examining primitive type data members, reference type constructor parameters, and function calls.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If immutable objects are constructed during deployment or restarts, then the system can initialize software components, but the process becomes lengthy and time-consuming

Engineering Contradiction:
Improvedeployment speedVSAvoidobject construction time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system performs preliminary actions by detecting immutable objects during compilation or class loading phases, before actual deployment or restarts occur. These objects are identified and prepared in advance, allowing the system to skip construction during time-critical deployment operations.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The invention creates copies of immutable objects during compilation or class loading, storing them in a cache or temporary storage. During deployment or restarts, the system uses these pre-created copies instead of constructing new objects, significantly reducing construction time while maintaining object integrity.

Inventive Principle:
Principle #26Copying

2Reliability

If the system monitors and checks every object construction to determine immutability, then object correctness is ensured, but the complexity of the system increases

Engineering Contradiction:
Improveobject immutability assuranceVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system replaces manual or complex runtime verification mechanisms with automated static analysis during compilation. The compiler or class loader automatically detects immutable objects by analyzing constructor parameters and field assignments, substituting complex runtime checks with simpler compile-time determinations.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

The system enables objects to self-identify as immutable through specific annotations or conventions in their class definitions. The monitoring mechanism leverages these self-declared properties rather than requiring complex external verification, reducing system complexity while maintaining reliability.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9189206B2System and method for managing immutable objects
Publication Date: 2015.11.17 RED HAT INC
  • US9189206B2 patent drawing
  • US9189206B2 patent drawing
  • US9189206B2 patent drawing

AI summary

A system and method of managing immutable objects includes monitoring new object construction, detecting construction of an object, determining a key for the object, looking the key up in a persistent storage system, when the key is found in the persistent storage system, loading the object from the persistent storage system, and when the key is not found in the persistent storage system constructing the object, determining whether the object is immutable, and storing the object in the persistent storage system when the object is immutable. In some examples, determining whether the object is immutable includes examining each primitive type data member of the object, examining each reference type constructor parameter of the object to determine whether the reference type constructor parameter is defensively copied, examining all function calls used by the object to determine whether the function calls preserve immutability, and recursively examining each reference type data member of the object.