Container Memory Expansion Across Fixed Contiguous Allocations
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Containers initiated with contiguous memory of fixed size face challenges when applications require more aggregate memory than the fixed size, leading to potential crashes due to inadequate memory management.
Innovation Solution
A memory management tool (MMT) dynamically allocates memory by initiating a second instance of the container with a different fixed size when the first instance cannot accommodate additional memory needs, providing a common interface for accessing objects across both instances, and migrates objects between instances as needed to manage memory efficiently.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If a container is initiated with a contiguous memory of a fixed size, then the container ensures stable and predictable memory allocation, but the container cannot accommodate additional memory needs when applications require more aggregate memory than the fixed size
Solution Approach 1:
The memory system is segmented into a primary contiguous memory space and secondary non-contiguous memory spaces. When the primary memory is exhausted, the system divides additional memory allocations into separate segments that can be managed independently, allowing the container to grow beyond its initial fixed size while maintaining the stability of the original contiguous allocation.
Solution Approach 2:
The system transitions from a single-dimensional contiguous memory model to a multi-dimensional memory architecture. It introduces virtual memory indexing and mapping layers that allow applications to access memory beyond the physical contiguous boundaries, effectively adding dimensional layers to the memory space organization.
2Adaptability or versatility
If the container allocates additional non-contiguous memory when the contiguous memory is exhausted, then the container can handle enhanced memory requirements, but the applications may not be able to access objects in the additional memory without a common interface
Solution Approach 1:
A memory management intermediary layer is introduced between applications and the segmented memory spaces. This intermediary maintains a unified view of memory for applications, automatically managing the complexity of accessing objects across contiguous and non-contiguous memory regions through virtual addressing and mapping mechanisms.
Solution Approach 2:
The memory management system implements a universal interface that can handle both contiguous and non-contiguous memory allocations through a single unified API. This multi-functional interface abstracts away the underlying memory organization differences, allowing applications to access any memory region regardless of its contiguity status.
3Reliability
If the container crashes when memory requirements are not managed, then the system maintains data integrity, but the service availability is reduced due to container restarts
Solution Approach 1:
The system performs preliminary memory provisioning by pre-allocating or reserving additional memory spaces before they are strictly needed. Memory expansion is triggered proactively based on predicted usage patterns or threshold conditions, allowing the container to prepare for upcoming memory demands without interruption to service.
Solution Approach 2:
The memory allocation system becomes dynamic and adaptive, continuously monitoring application memory usage and automatically adjusting the container's memory capacity in real-time. This dynamic behavior allows the system to scale memory resources flexibly based on actual needs, preventing both crashes and unnecessary resource consumption.
Data Source
AI summary
An aspect of the present disclosure is directed to memory management in a digital processing system. A first instance of a container (e.g., Java Virtual Machine (JVM)) is initiated with a first contiguous memory of a first fixed size. A set of applications is executed within the first instance. Upon receiving from an application, a request for an additional amount of memory, the system determines whether the additional amount can be allocated within the first contiguous memory. If the additional amount can be allocated, a first memory space of the additional amount is allocated to the application within the first contiguous memory. If the additional amount cannot be allocated, a second instance of the container is initiated with a second contiguous memory of a second fixed size and a second memory space of additional amount is allocated to the application within the second contiguous memory.


