Functional Block Memory Allocation via Merging
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Functional programming languages face inefficient memory usage due to treating all program segments as separate, independent programs, leading to suboptimal memory allocation and garbage collection, especially when some blocks utilize only a fraction of allocated memory pages.
Innovation Solution
An execution environment treats functional blocks as separate programs for memory management, allocating and deallocating memory pages like other programs, and combines smaller blocks into larger ones to optimize memory usage, leveraging the operating system's inherent memory management capabilities to reduce garbage collection overhead.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of operation
If all program segments are treated as separate, independent programs for memory management, then each segment can be allocated and deallocated independently, but memory allocation efficiency deteriorates because smaller blocks utilize only a fraction of allocated memory pages
Solution Approach 1:
The patent merges multiple small functional blocks into larger composite blocks that can be allocated as unified memory units. By combining several small blocks that would each receive full memory page allocations into a single larger block, the system allocates memory more efficiently and reduces the fraction of unused memory space within each allocation.
2Productivity
If functional blocks are treated as separate programs, then garbage collection can be performed independently for each block, but garbage collection overhead increases due to unnecessary collection of small blocks
Solution Approach 1:
The patent combines multiple small functional blocks into larger composite blocks, which reduces the total number of garbage collection operations needed. Instead of performing separate garbage collection for each small block, the system performs fewer collections on larger composite blocks, thereby reducing overhead and improving efficiency.
3Reliability
If memory pages are allocated to each functional block individually, then each block has dedicated memory resources, but memory usage efficiency deteriorates when blocks use only a fraction of their allocated pages
Solution Approach 1:
The patent merges multiple functional blocks into larger composite blocks that allocate memory pages more efficiently. By grouping small blocks that would individually receive full page allocations into larger composite blocks, the system ensures dedicated memory resources are available while reducing the total amount of allocated memory and improving overall usage efficiency.
Data Source
AI summary
An execution environment for functional code may treat application segments as individual programs for memory management. A larger program of application may be segmented into functional blocks that receive an input and return a value, but operate without changing state of other memory objects. The program segments may have memory pages allocated to the segments by the operating system as other full programs, and may deallocate memory pages when the segments finish operating. Functional programming languages and imperative programming languages may define program segments explicitly or implicitly, and the program segments may be identified at compile time or runtime.


