IP Library Granted Patent US 12,430,174
Granted Patent B2
US 12,430,174 · App. 17/412,548 · Granted Sep 30, 2025

Systems and methods for memory management in big data applications

Inventor: N. Lee Rhodes (Los Altos, CA)
Assignee: YAHOO ASSETS LLC
G06F9/5016
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,430,174
App. No.
17/412,548
Granted
Sep 30, 2025
Kind
B2
Abstract

The disclosed embodiments describe techniques for allocating memory to functions processing big data. In one embodiment, a method is disclosed comprising allocating a first memory space to a function, the memory space comprising an initial amount of memory for the function; declaring the first memory space as the current memory space; processing data using the function, the processing writing data to the current memory space; determining that the function requires additional memory space; allocating a new memory space based on the current memory space and a growth factor; copying all data in the current memory space to the new memory space; declaring the current memory space as the old memory space; declaring the new memory space as the current memory space; and not deallocating the old memory space.

Claims (54)

1. A method comprising:

allocating a first memory space to a function, the memory space comprising an initial amount of memory for the function and the function being one of a plurality of functions processing a big data job;

setting the first memory space as a current memory space;

processing data using the function, the processing comprising writing data to the current memory space;

determining that the function requires additional memory space by monitoring that the function has exhausted its current memory space while processing;

determining that memory usage across the plurality of functions exhibits a power-law distribution wherein a small subset of the functions consume significantly more memory than a majority of the functions;

in response to determining that the memory usage exhibits the power-law distribution:

allocating a new memory space based on the current memory space and a geometric growth factor, the new memory space being larger than the current memory space by a factor determined by the geometric growth factor;

copying data in the current memory space to the new memory space;

setting the current memory space as an old memory space;

setting the new memory space as the current memory space; and

not deallocating the old memory space.

2. The method of claim 1 , wherein allocating a new memory space comprises computing a size of the new memory space by multiplying the current memory space by the growth factor.

3. The method of claim 2 , wherein allocating a new memory space comprises repeatedly allocating memory according to a geometric progression of new memory space sizes.

4. The method of claim 3 , wherein a total space consumed by a function, including non-deallocated memory spaces, comprises a geometric series sum.

5. The method of claim 2 , further comprising determining that the size of the new memory space exceeds a preconfigured maximum and raising one of an exception or a flag to indicate a need for special handling.

6. The method of claim 4 , further comprising executing one of a garbage collection or memory deallocation routine when terminating to reclaim all memory consumed by the function.

7. The method of claim 1 , further comprising initiating a plurality of additional functions and allocating memory spaces to the plurality of additional functions based on the initial amount of memory and the growth factor.

8. A non-transitory computer-readable storage medium for tangibly storing computer program instructions capable of being executed by a computer processor, the computer program instructions defining steps of:

allocating a first memory space to a function, the memory space comprising an initial amount of memory for the function and the function being one of a plurality of functions processing a big data job;

setting the first memory space as a current memory space;

processing data using the function, the processing comprising writing data to the current memory space;

determining that the function requires additional memory space by monitoring that the function has exhausted its current memory space while processing;

determining that memory usage across the plurality of functions exhibits a power-law distribution wherein a small subset of the functions consume significantly more memory than a majority of the functions;

in response to determining that the memory usage exhibits the power-law distribution:

allocating a new memory space based on the current memory space and a geometric growth factor, the new memory space being larger than the current memory space by a factor determined by the geometric growth factor;

copying data in the current memory space to the new memory space;

setting the current memory space as an old memory space;

setting the new memory space as the current memory space; and

not deallocating the old memory space.

9. The non-transitory computer-readable storage medium of claim 8 , wherein allocating a new memory space comprises computing a size of the new memory space by multiplying the current memory space by the growth factor.

10. The non-transitory computer-readable storage medium of claim 9 , wherein allocating a new memory space comprises repeatedly allocating memory according to a geometric progression of new memory space sizes.

11. The non-transitory computer-readable storage medium of claim 10 , wherein a total space consumed by a function, including non-deallocated memory spaces, comprises a geometric series sum.

12. The non-transitory computer-readable storage medium of claim 9 , the steps further comprising determining that the size of the new memory space exceeds a preconfigured maximum and raising one of an exception or a flag to indicate a need for special handling.

13. The non-transitory computer-readable storage medium of claim 11 , the steps further comprising executing one of a garbage collection or memory deallocation routine when terminating to reclaim all memory consumed by the function.

14. The non-transitory computer-readable storage medium of claim 8 , the steps further comprising initiating a plurality of additional functions and allocating memory spaces to the plurality of additional functions based on the initial amount of memory and the growth factor.

15. A device comprising:

a processor configured to:

allocate a first memory space to a function, the memory space comprising an initial amount of memory for the function and the function being one of a plurality of functions processing a big data job;

set the first memory space as a current memory space;

process data using the function, the processing comprising writing data to the current memory space;

determine that the function requires additional memory space by monitoring that the function has exhausted its current memory space while processing;

determining that memory usage across the plurality of functions exhibits a power-law distribution wherein a small subset of the functions consume significantly more memory than a majority of the functions;

in response to determining that the memory usage exhibits the power-law distribution:

allocate a new memory space based on the current memory space and a geometric growth factor, the new memory space being larger than the current memory space by a factor determined by the geometric growth factor;

copy data in the current memory space to the new memory space;

set the current memory space as an old memory space;

set the new memory space as the current memory space; and

not deallocate the old memory space.

16. The device of claim 15 , wherein allocating a new memory space comprises computing a size of the new memory space by multiplying the current memory space by the growth factor.

17. The device of claim 16 , wherein allocating a new memory space comprises repeatedly allocating memory according to a geometric progression of new memory space sizes.

18. The device of claim 17 , wherein a total space consumed by a function, including non-deallocated memory spaces, comprises a geometric series sum.

19. The device of claim 17 , further comprising executing one of a garbage collection or memory deallocation routine when terminating to reclaim all memory consumed by the function.

20. The device of claim 15 , further comprising initiating a plurality of additional functions and allocating memory spaces to the plurality of additional functions based on the initial amount of memory and the growth factor.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 25, 2025
From: YAHOO AD TECH LLC (FORMERLY VERIZON MEDIA INC.)
To: YAHOO ASSETS LLC
Reel/Frame 072523/0019 →
PATENT SECURITY AGREEMENT (FIRST LIEN) Recorded Sep 29, 2022
From: YAHOO ASSETS LLC
To: ROYAL BANK OF CANADA, AS COLLATERAL AGENT
Reel/Frame 061571/0773 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2021
From: YAHOO AD TECH LLC (FORMERLY VERIZON MEDIA INC.)
To: YAHOO ASSETS LLC
Reel/Frame 058982/0282 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 26, 2021
From: RHODES, N. LEE
To: VERIZON MEDIA INC.
Reel/Frame 057296/0591 →
Continuity (1)
Related Publication 20230060922A1 · Mar 2, 2023
References Cited (16)
US 20040148463A1 · Brown · 2004 [cited by examiner]
US 20080040561A1 · Bryant · 2008 [cited by examiner]
US 20080126623A1 · Chang · 2008 [cited by examiner]
US 20090044276A1 · Abdel-Aziz · 2009 [cited by examiner]
US 20090106521A1 · Whisnant · 2009 [cited by examiner]
US 20100042755A1 · Fuente · 2010 [cited by examiner]
US 20100223262A1 · Krylov · 2010 [cited by examiner]
US 20110264870A1 · Ylonen · 2011 [cited by examiner]
US 20120151144A1 · Yohn · 2012 [cited by examiner]
US 20140019706A1 · Kanfi · 2014 [cited by examiner]
US 20140149364A1 · Braverman · 2014 [cited by examiner]
US 20160139815A1 · Levy · 2016 [cited by examiner]
US 20190295114A1 · Pavletic · 2019 [cited by examiner]
US 20200175374A1 · Hestness · 2020 [cited by examiner]
US 20220383188A1 · Ananthanarayanan · 2022 [cited by examiner]
US 20230060922A1 · Rhodes · 2023 [cited by examiner]