Animation out of memory on some devices

Former Member
Former Member

Hi,

I have just been adding animations into our app. This seems to work for 36 or the 39 devices that we have supported up till now.
The devices I see which fail in simulator; saying "Out of memory" are....

Fenix 6, Fenix 6s, and Forerunner 245.

Bringing up Memory monitor in simulator shows these devices apparently only reporting a capacity of 124KB; whereas looking into the devices that are working they seem to have a lot more memory typicall > 1024KB.

Is this a Firmware/Simulator bug for these devices or do they really just have so little memory?

I suppose one solution is a runtime check on memory and don't use animations for these devices?

Regards,
Owain

  • The memory on the devices is actually different.  The common thing is the devices you list don't have music or maps. The 245m has music and more memory than the 245, and the "pro" f6 devices have music and maps and more memory than the non-pro devices.

  • Some older devices even have only 64 KB available for apps. The data field / widget size limit is even lower than the app limit.

    I guess you could do a runtime check but personally I prefer to enable/disable features at compile-time, using annotations, as you typically save more memory that way (by omitting code you don't need for certain devices). This can be important if you need to support low-end or old devices.

    You can see the memory limit for each device / app type by opening your Garmin root folder (*) and navigating to:

    ConnectIQ\Devices\{device_id}\compiler.json

    e.g.

    ConnectIQ\Devices\fr245\compiler.json

    (*)

    Windows: %APPDATA%\Garnin\

    MacOS: ~/Library/Application Support/Garmin/

  • Former Member
    0 Former Member in reply to flowstate

    Found it quite surprising; I view fenix range as more high end so really surprised Fenix 6 had such limited memory.
    Even a Fenix 6; one of the newest models does not have much memory.

    Only just read messages; I have tested with a runtime check switch to allow animation or a static message; maybe not best solution

  • Yeah Garmin has multiple levels of market segmentation / product differentiation which can be quite confusing. Seems to be working for them so far, though.

    Even within the "high-end" range of watches (say, Fenix 6), there's still a low and high end model. The other thing is that one could argue "available RAM for apps" is not necessarily an end-user marketing bullet point, as users have no idea. It's not on a spec sheet anywhere.

    Go with whatever code works for you. I'm used to coding mostly data fields (which have much less available memory) and/or trying to target every single watch that Garmin ever made, so I'm used to writing Garmin code in a certain way to maximize memory savings.

  • It's the music vs non music.  Music devices tend to have a huge amount of memory, and on top of that, the file system is MTP vs looking like a flash drive.  If you plug an f6 pro into a mac, you won't see it without something like like this: www.android.com/.../