Runtime Memory Throttling via Syntax Tree Modification

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

JAVA virtual machines are prone to shutdown due to cross-thread memory contamination, as they manage memory opaquely, leading to potential corruption and instability in shared user environments like multi-user servers.

Innovation Solution

Implementing a memory management policy at runtime by modifying calls in a syntax tree to create memory-modified calls linked with a memory management class, which checks against a memory policy during compilation, preventing excessive memory usage and ensuring stable execution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Extent of automation

If JAVA virtual machines manage memory via opaque structures, then memory management is automated and portable, but cross-thread memory contamination can occur causing system shutdown

Engineering Contradiction:
Improvememory management automationVSAvoidsystem stability
Core Design Contradiction:
Extent of automationVSReliability

Solution Approach 1:

The patent introduces a memory management class as an intermediary between threads and the JAVA virtual machine's memory structures. This class acts as a mediator that enforces memory usage policies, tracks memory consumption per thread, and prevents unauthorized memory access. By inserting this intermediary layer, the system maintains automated memory management while adding control mechanisms to prevent cross-thread contamination and ensure system reliability.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of operation

If memory is allocated dynamically without explicit control, then programming is simplified, but memory exhaustion and instability occur in shared environments

Engineering Contradiction:
Improveprogramming simplicityVSAvoidmulti-user server stability
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The patent implements preliminary action by establishing memory usage policies and limits before executing code in shared environments. The memory management class pre-configures allocation rules, sets thresholds, and defines permitted operations. This allows programmers to write simple code without explicit memory control while the system proactively prevents memory exhaustion by enforcing pre-established policies, thus maintaining both programming simplicity and server stability.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If memory access is unrestricted for portability, then write once run anywhere capability is achieved, but security and stability are compromised in shared environments

Engineering Contradiction:
ImproveportabilityVSAvoidmemory corruption risk
Core Design Contradiction:
Adaptability or versatilityVSObject-affected harmful factors

Solution Approach 1:

The patent applies local quality by implementing differentiated memory access control for different execution contexts. The memory management class provides unrestricted memory access for single-user applications maintaining portability, while enforcing strict access controls and policies for multi-user server environments. This localized approach allows the same JAVA virtual machine to adapt to different security requirements, maintaining portability where needed while preventing memory corruption in shared environments.

Inventive Principle:
Principle #3Local quality

Data Source

PatentEP3033674B1Runtime memory throttling
Publication Date: 2019.07.24 ORACLE INT CORP
  • EP3033674B1 patent drawingFigure 1
  • EP3033674B1 patent drawingFigure 2
  • EP3033674B1 patent drawingFigure 3

AI summary

A system that implements a memory management policy at runtime when receiving a syntax tree in response to initiating the compiling of software code identifies a plurality of calls within the syntax tree and modifies each the plurality of calls with a corresponding memory-modified call to create a plurality of memory-modified calls. Each memory-modified call is linked with a memory management class and the modifying occurs during the compiling of the software code. Following modification of each of the plurality of calls, the system compiles the plurality of memory-modified calls to generate a bytecode.