IP Library Granted Patent US 12,608,232
Granted Patent B2
US 12,608,232 · App. 17/649,120 · Granted Apr 21, 2026

Determining available memory on a mobile platform

Inventors: Scott James Carbon-Ogden (London, GB); James Andrew Blackler (London, GB)
Assignee: Google LLC
G06F9/5016G06F9/5022G06F9/5038G06N3/04G06F2209/503G06F2209/508
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,608,232
App. No.
17/649,120
Granted
Apr 21, 2026
Kind
B2
Abstract

An application from a plurality of applications executing at one or more processors of a computing device may determine a plurality of memory metrics of the computing device. The application may determine information indicative of a predicted safe amount of memory available for allocation by an application from the plurality of applications based at least in part on the plurality of memory metrics. The application may adjust, based at least in part on the information indicative of the predicted safe amount of memory available for allocation by the application, one or more characteristics of the application executing at the one or more processors to adjust an amount of memory allocated by the application.

Claims (54)

1 . A method comprising:

determining, by an application from a plurality of applications executing at one or more processors of a computing device, current values of a plurality of memory metrics of the computing device, including calling one or more functions provided by an operating system of the computing device to receive the current values of the plurality of memory metrics, wherein the plurality of memory metrics include per-process memory usage metrics for the plurality of applications;

determining, by a library executing at the one or more processors as a separate process from the application and using one or more machine-learned models to predict a safe amount of memory available for allocation based at least in part on the current values of the plurality of memory metrics, information indicative of a predicted safe amount of memory available for allocation by the application without causing the computing device to enter a low memory state in which the application is in danger of being terminated by the operating system;

monitoring, by the computing device, a canary application executing at the one or more processors to determine whether the canary application has been terminated;

responsive to determining the canary application has been terminated, making, by the computing device, a prediction that the application is in danger of being terminated;

responsive to making the prediction that the application is in danger of being terminated, sending, by the computing device and to the application, a warning indicating that the application is in danger of being terminated; and

adjusting, by the application executing at the one or more processors and based at least in part on the information indicative of the predicted safe amount of memory available for allocation by the application, one or more characteristics of the application executing at the one or more processors to adjust an amount of memory allocated by the application to be at or below the predicted safe amount of memory available for allocation by the application to prevent the computing device from entering the low memory state.

2 . The method of claim 1 , wherein the information indicative of the predicted safe amount of memory available for allocation by the application includes a predicted safe amount of memory that is available for allocation by the application without causing the computing device to enter a low memory state.

3 . The method of claim 2 , wherein adjusting the one or more characteristics of the application executing at the one or more processors to adjust the amount of memory allocated by the application further comprises:

determining, by the application, that the predicted safe amount of memory that is available for allocation by the application is below a specified threshold; and

in response to determining that the predicted safe amount of memory that is available for allocation by the application is below the specified threshold, adjusting, by the application, the one or more characteristics of the application executing at the one or more processors to decrease the amount of memory allocated by the application.

4 . The method of claim 1 , wherein the information indicative of the predicted safe amount of memory for allocation by the application includes an indication that the computing device is in a low memory state, and wherein the application is in danger of being terminated when the computing device is in the low memory state.

5 . The method of claim 1 , wherein determining the information indicative of the predicted safe amount of memory available for allocation by the application further comprises:

inputting, by the library executing at the one or more processors, the current values of the plurality of memory metrics into a memory usage prediction model that comprises one or more neural networks to generate an output indicative of the information indicative of the predicted safe amount of memory available for allocation by the application.

6 . The method of claim 5 , wherein the memory usage prediction model is trained using training data generated from performing stress tests on a plurality of different computing devices and monitoring values of the plurality of memory metrics of the plurality of different computing devices at points in time when applications were terminated by the plurality of different computing devices.

7 . The method of claim 1 , wherein determining the information indicative of the predicted safe amount of memory available for allocation by the application further comprises:

determining, by the library executing at the one or more processors, thresholds for the plurality of memory metrics; and

comparing, by the library executing at the one or more processors, the current values of the plurality of memory metrics with the thresholds for each of the plurality of memory metrics to determine the information indicative of the predicted safe amount of memory available for allocation by the application.

8 . The method of claim 7 , wherein determining the thresholds for each of the plurality of memory metrics further comprises:

determining, by the one or more processors, highest values reached by each of the plurality of memory metrics immediately prior to one or more applications executing at the one or more processors being terminated due to the computing device being in a low memory state; and

determining, by the one or more processors, the thresholds for the plurality of memory metrics based at least in part on the highest values reached by each of the plurality of memory metrics.

9 . The method of claim 8 , wherein determining the thresholds for the plurality of memory metrics based at least in part on the highest values reached by each of the plurality of memory metrics further comprises:

inputting, by the one or more processors, the highest values reached by each of the plurality of memory metrics into one or more neural networks to determine the thresholds for the plurality of memory metrics.

10 . A computing device, comprising:

memory; and

at least one processor communicably coupled to the memory and configured to:

execute a plurality of applications;

determine current values of a plurality of memory metrics of the memory, including calling one or more functions provided by an operating system of the computing device to receive the current values of the plurality of memory metrics, wherein the plurality of memory metrics include per-process memory usage metrics for the plurality of applications;

determine, by a library executing at the one or more processors as a separate process from the application and using one or more machine-learned models to predict a safe amount of memory available for allocation based at least in part on the current values of the plurality of memory metrics, information indicative of a predicted safe amount of memory available for allocation by an application from the plurality of applications without causing the computing device to enter a low memory state in which the application is in danger of being terminated by the operating system;

monitor a canary application executing at the one or more processors to determine whether the canary application has been terminated;

responsive to determining the canary application has been terminated, make a prediction that the application is in danger of being terminated;

responsive to making the prediction that the application is in danger of being terminated, send, to the application, a warning indicating that the application is in danger of being terminated; and

adjust, based at least in part on the information indicative of the predicted safe amount of memory available for allocation by the application, one or more characteristics of the application executing at the at least one processor to adjust an amount of memory allocated by the application to be at or below the predicted safe amount of memory available for allocation by the application to prevent the computing device from entering the low memory state.

11 . The computing device of claim 10 , wherein the information indicative of the predicted safe amount of memory available for allocation by the application includes a predicted safe amount of memory that is available for allocation by the application without causing the computing device to enter a low memory state.

12 . The computing device of claim 11 , wherein to adjust the one or more characteristics of the application executing at the at least one processor to adjust the amount of memory allocated by the application, the at least one processor are further configured to:

determine that the predicted safe amount of memory that is available for allocation by the application is below a specified threshold; and

in response to determining that the predicted safe amount of memory that is available for allocation by the application is below the specified threshold, adjust the one or more characteristics of the application executing at the at least one processor to decrease the amount of memory allocated by the application.

13 . The computing device of claim 10 , wherein the information indicative of the predicted safe amount of memory for allocation by the application includes an indication that the computing device is in a low memory state.

14 . The computing device of claim 10 , wherein to execute the library to determine the information indicative of the predicted safe amount of memory available for allocation by the application, the at least one processor are further configured to:

execute the library to input the current values of the plurality of memory metrics into a memory usage prediction model that comprises one or more neural networks to generate an output indicative of the information indicative of the predicted safe amount of memory available for allocation by the application.

15 . The computing device of claim 14 , wherein the memory usage prediction model is trained using training data generated from performing stress tests on a plurality of different computing devices and monitoring values of the plurality of memory metrics of the plurality of different computing devices at points in time when applications were terminated by the plurality of different computing devices.

16 . The computing device of claim 10 , wherein to execute the library to determine the information indicative of the predicted safe amount of memory available for allocation by the application, the at least one processor are further configured to:

execute the library to determine thresholds for the plurality of memory metrics; and

execute the library to compare the current values of the plurality of memory metrics with the thresholds for each of the plurality of memory metrics to determine the information indicative of the predicted safe amount of memory available for allocation by the application.

17 . The computing device of claim 16 , wherein to execute the library to determine the thresholds for each of the plurality of memory metrics, the at least one processor are further configured to:

determine highest values reached by each of the plurality of memory metrics immediately prior to one or more applications executing at the at least one processor being terminated due to the computing device being in a low memory state; and

determine the thresholds for the plurality of memory metrics based at least in part on the highest values reached by each of the plurality of memory metrics.

18 . A non-transitory computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors of a computing device to:

determine, by an application from a plurality of applications executing at the one or more processors, current values of a plurality of memory metrics of memory of the computing device, including calling one or more functions provided by an operating system of the computing device to receive the current values of the plurality of memory metrics, wherein the plurality of memory metrics include per-process memory usage metrics for the plurality of applications;

determine, by a library executing at the one or more processors as a separate process from the application and using one or more machine-learned models to predict a safe amount of memory available for allocation based at least in part on the current values of the plurality of memory metrics, information indicative of a predicted safe amount of memory available for allocation by an application without causing the computing device to enter a low memory state in which the application is in danger of being terminated by the operating system;

monitor a canary application executing at the one or more processors to determine whether the canary application has been terminated;

responsive to determining the canary application has been terminated, make a prediction that the application is in danger of being terminated;

responsive to making the prediction that the application is in danger of being terminated, send, to the application, a warning indicating that the application is in danger of being terminated; and

adjust, based at least in part on the information indicative of the predicted safe amount of memory available for allocation by the application, one or more characteristics of the application executing at the one or more processors to adjust an amount of memory allocated by the application to be at or below the predicted safe amount of memory available for allocation by the application to prevent the computing device from entering the low memory state.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2022
From: CARBON-OGDEN, SCOTT JAMES; BLACKLER, JAMES ANDREW
To: GOOGLE LLC
Reel/Frame 058795/0158 →
Continuity (2)
Provisional Application 63227094 · Jul 29, 2021
Related Publication 20230036737A1 · Feb 2, 2023
References Cited (25)
US 9471237B1 · Dass · 2016 [cited by examiner]
US 20040268078A1 · Hassan · 2004 [cited by examiner]
US 20080147705A1 · Bansal · 2008 [cited by examiner]
US 20120150773A1 · DiCorpo et al. · 2012 [cited by applicant]
US 20130067186A1 · Pronovost et al. · 2013 [cited by applicant]
US 20130332942A1 · Ramesh · 2013 [cited by examiner]
US 20140059571A1 · Watson et al. · 2014 [cited by applicant]
US 20140302837A1 · Ronen · 2014 [cited by examiner]
US 20150067238A1 · Marcu · 2015 [cited by examiner]
US 20150347181A1 · Myrick · 2015 [cited by examiner]
US 20170177272A1 · Ilangovan · 2017 [cited by examiner]
US 20190213099A1 · Schmidt · 2019 [cited by examiner]
US 20190339885A1 · Yanagihara · 2019 [cited by examiner]
US 20200073717A1 · Hari · 2020 [cited by examiner]
US 20200118039A1 · Kocberber et al. · 2020 [cited by applicant]
US 20200192734A1 · Kao · 2020 [cited by examiner]
US 20210019200A1 · Niles et al. · 2021 [cited by applicant]
EP 3514684A1 · 2019 [cited by applicant]
WO 2014143802A1 · 2014 [cited by applicant]
WO 2019213086A1 · 2019 [cited by applicant]
International Search Report and Written Opinion of International Application No. PCT/US2022/072375 dated Sep. 13, 2022, 13 pp. [cited by applicant]
Li et al., “Practical Resource Usage Prediction Method for Large Memory Jobs in HPC Clusters”, Asian Conference on Supercomputing Frontiers, vol. 11416, Springer International Publishing, Apr. 2019, 18 pp. [cited by applicant]
Response to Communication Pursuant to Rules 161(1) and 162 EPC dated Jan. 8, 2024, from counterpart European Application No. 22735274.7, filed Jun. 19, 2024, 15 pp. [cited by applicant]
Android Authority, “Manage Your App's Memory,” retrieved from https://developer.android.com/topic/performance/memory, on Jan. 27, 2022, Last updated Jan. 11, 2022, 9 pp. [cited by applicant]
Communication pursuant to Article 94(3) EPC from counterpart European Application No. 22735274.7 dated Jan. 23, 2026, 10 pp. [cited by applicant]