Serialization of Cyclic Data Structures Using Garbage Collector Information

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing serialization methods for cyclic data structures are inefficient, particularly for large and complex systems, as they fail to leverage garbage collection information to optimize serialization performance and memory usage.

Innovation Solution

The method utilizes garbage collection information to identify objects with no more than one reference, avoiding unnecessary checks for cyclicity and sharing, and employs multiobject-based garbage collection to streamline serialization by grouping objects into linearized trees, reducing memory consumption and speeding up the process.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If traditional serialization methods are used for cyclic data structures, then all objects must be checked for sharing and cyclicity, but this results in poor serialization performance and high memory consumption

Engineering Contradiction:
Improveserialization performanceVSAvoidcomplexity of serialization process
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The garbage collector performs preliminary analysis of the object graph before serialization, pre-computing which objects have multiple references. This preliminary action allows the serialization process to skip unnecessary checks for objects that are guaranteed to have only one reference, significantly improving performance while reducing complexity

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The garbage collector acts as an intermediary between the object graph and the serialization process. It provides pre-computed reference information that the serializer uses to make quick decisions about which objects need full checking versus which can be serialized directly without additional overhead

Inventive Principle:
Principle #24Intermediary (Mediator)

2Quantity of substance

If traditional serialization methods are used for cyclic data structures, then all objects must be indexed to track sharing, but this results in high memory consumption

Engineering Contradiction:
Improvememory consumptionVSAvoidaccuracy of reference tracking
Core Design Contradiction:
Quantity of substanceVSMeasurement precision

Solution Approach 1:

Instead of uniformly indexing all objects, the system applies different treatment based on local properties: objects identified by the garbage collector as having only one reference are excluded from indexing, while only objects with potential multiple references are indexed. This local differentiation reduces memory consumption while maintaining accurate reference tracking where needed

Inventive Principle:
Principle #3Local quality

3Productivity

If garbage collection information is utilized, then objects with single references can be identified, but this requires integration with garbage collector mechanisms

Engineering Contradiction:
Improveserialization speedVSAvoidintegration complexity with garbage collector
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The garbage collector's reference tracking mechanisms are leveraged to serve dual purposes: both garbage collection and serialization optimization. By making the garbage collector's internal data structures accessible to the serialization process, the system achieves multi-functionality where the same infrastructure supports both memory management and efficient serialization

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS8396904B2Utilizing information from garbage collector in serialization of large cyclic data structures
Publication Date: 2013.03.12 POSTQ IPR OY
  • US8396904B2 patent drawing
  • US8396904B2 patent drawing
  • US8396904B2 patent drawing

AI summary

A method for serializing cyclic or shared data structures using information from the garbage collector to determine that some objects in the data structure being serialized cannot have more than one reference.