Today’s blog post is a bit different. It’s a topic that’s a bit more technical than our typical posts, but the information shared could greatly impact your workers’ productivity and overall device service life/total cost of ownership (TCO). So, whether you need this information personally or you feel it's best to pass it along to someone on your team, we wanted to put it out there.
Plus, we could all use the reminder of how important memory is to our daily function.
See, when procuring a mobile device, one of the key specifications we probably all look for is the amount of RAM memory. But how well do we really understand this? You might ask yourself…
Am I buying too much? Am I buying too little? Will I have sufficient RAM for future applications? Will I still have sufficient RAM when I install future OS releases?
How will I know if I am running low on RAM?
Or maybe you’ve never asked these questions because you’ve never known you should. However, as applications grow in size, as new technologies such as augmented reality (AR) and machine learning (ML) emerge, and as mobile devices support an increasing number of operating system (OS) releases, the topic of “the right amount of RAM” is more relevant than ever. If you’re using mobile devices for business purposes, the importance is compounded by the mission criticality of your mobile devices combined with the need for a long service life to lower the TCO.
As always, our goal is to enable you to make more informed purchase decisions for your business. So, we’ve once again reached out to our mobile computing expert, Bruce Willins, for some advice. We put the above questions, and many other memory related questions, to Bruce to help you gain a better understanding of how the Android OS manages RAM and how you can best assess your current and future memory needs. Here’s what he shared:
Your Edge Blog Team: Let’s start with the basics. How is RAM used in a mobile computer?
Bruce: It’s pretty simple: mobile devices contain RAM (aka “memory”) and FLASH (aka “storage”). Applications are stored in FLASH and, once invoked, they are copied into and executed from RAM. Under normal operating conditions, once an app is loaded into RAM it stays there. As you invoke more and more apps, the RAM continues to fill until there’s nothing left. There are two options to remedy an over-subscribed RAM. First, on Android devices, you can manually remove older, unused apps by actively swiping up, doing a close all, or forcing a closure. Second, and the more common and automated option, is Android memory management.
Your Edge Blog Team: What is Android memory management?
Bruce: When you invoke a new app and there is insufficient RAM to host the app, Android memory management kicks in. Android looks for ways to free up RAM for the newly invoked app. It does so by either “killing” (an Android term) apps or by swapping apps into alternative memory areas (e.g., compressing the app and storing it into an allocated section of RAM called “ZRAM”). “Killing” can be a bit of misnomer since apps can be written to cache their context and have their context restored once they are re-invoked. In this case, “suspended” is probably a better term than “killed.” Even if the context is retained, reinvoking a killed app will incur a startup delay. Note, this is only a very high-level view, and there are many additional nuances to the way Android manages RAM that I’d be happy to share with anyone who wants to go deeper into the technical aspects of how this works.
Your Edge Blog Team: So, is killing an app necessarily a bad thing?
Bruce: Not necessarily. It’s a normal process within Android to free up RAM. Thus, you shouldn’t assume that a killed app necessarily indicates a RAM shortage condition. Let’s say you’re doing a quick one-time calculation with a calculator app. You then go back to your normal work apps. At some point, RAM goes low, and the calculator app is killed. Do you care? Probably not. Thus, the impact of killing an app is relative to the user experience (UX).
Your Edge Blog Team: If I’m someone who uses or manages mobile devices for business purposes, what signs should I look for to determine a low-RAM condition?
Bruce: It can manifest in multiple ways. Apps may take longer to start up, apps can lose their past context, the device in general can become sluggish, apps can crash, and it can take longer for the home screen to refresh. One or more of these conditions may reflect a RAM shortage.
Your Edge Blog Team: Does Android provide a way for me to look up how much RAM is available?
Bruce: This can get complicated, but there is a very high-level tool that can provide you a first order estimate of RAM utilization. If you enable “Developer Options,” you can then go to “Memory” and see the average usage, total available, average usage (%), and amount available. You can view this in time intervals from 3 hours to 1 day.
If you click down to “Memory Usage,” you will find a list of running apps and their respective average memory usage. Clicking on any specific app provides information such as average memory usage, frequency (how often they are consuming memory), and max memory usage. This provides you with a first order assessment. If the “average usage (%)” is high and the amount of available RAM shown is small relative to the size of the applications you are looking to add/run, this may be an indication of a RAM constraint.
Your Edge Blog Team: Can I close system apps in order to free up RAM?
Bruce: System apps are pre-installed apps, including “bloatware” (apps you don’t really want but are pre-installed on the device). Consumer devices may have a large number of such apps, whereas they are minimal on enterprise mobile devices such as Zebra devices. Forcibly killing vendor “system” apps can create instabilities and is not recommended. Such apps may also be re-initiated on reboot. Thus, to remove them permanently, you may have to manually “uninstall” them.
Your Edge Blog Team: How does Android know which apps to kill?
Bruce: Beyond considering when the app was last executed, each app is assigned a priority to determine their respective kill order. Apps are grouped into six categories, in order of least likely to be killed to most likely: foreground apps, visible apps, secondary server services, hidden applications, content providers, empty apps. Though a bit technical, one can intuitively comprehend that apps in the “foreground” should to the greatest extent possible not be killed.
Your Edge Blog Team: How much RAM do I have available for apps? And does it vary by device manufacturer and/or model?
Bruce: Everything starts with the “physical RAM.” This is the capacity of the device’s RAM integrated circuit (IC); it’s also the amount of RAM you’ll see published on a spec sheet (e.g., 4GB, 6GB…). When the device is powered on, part of the physical RAM is consumed by startup functions and formatting. On a Zebra device, for example, these include low level hardware routines, the Android OS, Zebra value adds and system apps, Qualcomm system on a chip (SoC) support code, and Google GMS libraries. The net amount of available RAM after startup varies by OS release and SoC architecture.
Let’s take an example. We start with a 4GB (4192MB) device running Android 11 on a Qualcomm SD660 SoC. Of the 4GB, the net amount of RAM available for user applications is 1812MB or ~43% of the physical RAM.
So, step one is to assess how much RAM is available with no user installed applications.
Your Edge Blog Team: How should I assess the amount of available RAM for future OS releases?
Bruce: There is not an exact way to determine the impact of future OS releases, however, we have studied trends based on past OS releases. For example, we have observed that the amount of RAM consumed at the end of power-up initialization between Android 8 and Android 11 on an SD660 SoC grew ~10% between each subsequent OS release. Thus, I recommend to customers that you measure the RAM footprint consumed after initialization and assume that this will grow by 10% for each planned subsequent OS release. We cannot predict the future, so in lieu of any additional data, we recommend you start with this model assumption.
Your Edge Blog Team: How much RAM do typical enterprise applications consume?
Bruce: First, you must understand that the amount of RAM consumed by any application is statistical. On average, at the very highest generalization, simple apps and games use a few hundred MB while more sophisticated apps can use a GB or more. RAM will also vary significantly based on app usage. For example, just invoking a Chrome browser will consume some amount of RAM, but opening several Chrome tabs will increase this footprint. As a data point, we invoked a Chrome browser on a 6490 SoC running Android 13. Upon invocation of just one tab, it consumed on average 128MB. Opening a total of five tabs increased this to 163MB (a 27% increase).
Looking at some Zebra value-add utilities, we see that Enterprise Home Screen requires ~44MB of RAM while Zebra Enterprise Browser requires ~156 MB.
As mentioned earlier, there are many nuances to consider in estimating RAM usage. In many instances, processes within Android may share memory space with other processes. Thus, the amount of memory occupied often includes both the amount private to the process plus some additional amount that is shared with other processes. This total is referred to as the proportional set size (PSS).
Using PSS, we can look at the amount of RAM consumed by a sample retail profile of five apps based on the 6490 SoC running Android 13.
Price Check = 131.77 MB
Workforce Connect Voice = 121.01 MB
Picking = 155.32 MB
Camera = 117.93 MB
DataWedge Demo = 67.16 MB
As shown, concurrently running these five apps requires an average of 593.2MB (based on PSS). As mentioned earlier, RAM use is statistical, and the statistical maximum amount of RAM for this use case goes up to 767.2MB.
Modeling current and future application RAM consumption is an arduous task, but I recommend that you undertake this effort given how essential mobile devices are to the successful execution of business operations. As always, Zebra resources are available to assist in any way possible.
Your Edge Blog Team: So, coming full circle, how much RAM should I be looking for when the mobile device will be used for business purposes?
Bruce: The answer is difficult, but the questions are simple…
How much do your applications need both now and in the future?
How much RAM will be available for your applications both now and in the future?
I’m optimistic that the information I’ve already shared provides basic principles for making these assessments. I do highly recommend that given the statistical nature of RAM usage and the many variables associated with these answers, that unless they are running a set of highly controlled applications in a static situation, that they be conservative in their RAM procurement. An inadequate amount of RAM is often difficult to detect and can impact both the user experience and curtail the service life of your device portfolio.
You May Also Be Interested in These Resources: