Java Garbage Collection Safepoint for Non-Blocking Socket I/O

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing virtual machine technologies face performance issues due to extra data copy operations and object movement during socket I/O in Java Virtual Machines, with methods like object pinning and garbage collection lockers introducing overhead or reducing scalability.

Innovation Solution

A system and method that periodically garbage collects objects in the Java memory space, temporarily disallows garbage collection during I/O operations by changing the thread state to prevent object movement, using safepoints to avoid global locks and enabling non-blocking I/O.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If object pinning is used to prevent object movement during I/O, then I/O performance is improved, but allocation overhead and garbage collection overhead increase

Engineering Contradiction:
ImproveI/O performanceVSAvoidallocation overhead and garbage collection overhead
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent extracts the object pinning mechanism from the I/O operation itself and separates it into a distinct safepoint system. Instead of pinning objects continuously or globally, the system creates localized safepoints only when I/O operations need to access heap objects, thereby eliminating unnecessary overhead during normal allocation and garbage collection operations.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent implements a dynamic safepoint system that adapts to I/O operation needs. The thread state is dynamically changed to enter safepoint mode only during I/O operations requiring direct heap access, and normally remains in a non-safepoint state, allowing flexible adjustment between performance optimization and system responsiveness based on operational context.

Inventive Principle:
Principle #15Dynamics

2Reliability

If a global GC locker is used to prevent garbage collection during I/O, then object movement is prevented, but system scalability is reduced due to lock contention

Engineering Contradiction:
Improveobject movement preventionVSAvoidsystem scalability
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent segments the global garbage collection locking mechanism into localized thread-specific safepoints. Instead of using a single global lock that all threads must contend for, each thread has its own safepoint state that can be independently entered and exited, eliminating lock contention and improving system scalability while still preventing object movement during I/O operations.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a safepoint mechanism as an intermediary between the thread and the garbage collection system. This intermediary layer allows the thread to signal its need for object stability without requiring direct global lock acquisition, enabling the garbage collection system to coordinate with multiple threads simultaneously without creating contention points.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If direct socket I/O access to Java heap is enabled, then data copy operations are eliminated, but object movement during garbage collection causes I/O errors

Engineering Contradiction:
Improvedata copy eliminationVSAvoidI/O operation reliability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent applies preliminary anti-action by preemptively changing the thread state to safepoint mode before performing direct I/O operations on heap objects. This prevents garbage collection from moving objects during the I/O operation, thereby eliminating the risk of I/O errors while maintaining the performance benefit of direct heap access.

Inventive Principle:
Principle #9Preliminary anti-action

Solution Approach 2:

The patent performs preliminary action by entering safepoint mode and preventing garbage collection before the I/O operation begins. This ensures that heap objects remain stationary throughout the entire I/O process, allowing direct access without the need for defensive copying or error handling mechanisms.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9213562B2Garbage collection safepoint system using non-blocking asynchronous I/O call to copy data when the garbage collection safepoint is not in progress or is completed
Publication Date: 2015.12.15 ORACLE INT CORP
  • US9213562B2 patent drawing
  • US9213562B2 patent drawing
  • US9213562B2 patent drawing

AI summary

A system and method for providing direct socket input/output (I/O) for Java in a Java Virtual Machine (JVM) environment. During runtime, the system periodically garbage collects software objects in the Java memory space or heap. In accordance with an embodiment, the system provides a means to change the state of a thread performing the I/O which temporarily disallows garbage collection from taking place, thus guaranteeing that a receiving object in the heap does not move. The use of safepoints to prohibit GC from happening during the I/O call means that a global GC lock is not required. Non-blocking I/O is utilized, while prohibiting a thread from entering a GC safepoint during an I/O system call. The technique addresses disadvantages of previous methods by removing contended locks and by removing restrictions on allocation. In accordance with an embodiment, a special thread state can be used to prevent the thread from entering a GC safepoint.