Is the 124kB limit forever?

Here's a question for Garmin.
Is the 124kB limit in CIQ2,3 a forever hardware limit or is it an arbitrary value that someone set, thinking "that should be plenty"?
I see that CIQ is somewhere in between Pebble, which had 56 Kb for compiled C code and WatchOS where there is effectively no limit (think scores of megabytes) for Swift code, and the Garmin watch does appear to have plenty of space for storing files. Not knowing anything of the device architecture, I can't know how appropriate the question is.
Is it possible, for example, that next year we'll see CIQ 4 with the capacity upped by a decimal point to 1.2Mb?
I'm just asking because I'm spending an inordinate amount of time and effort squeezing my app into the current space.
  • Actually, the change in max objects happened back in CIQ2.4. The vahr is still running 2.4.x and the newest FW for it is from last March, and it's one of the devices that will not be upgraded to CIQ3.

    The memory limits for a given device are fixed, but at times, there's a bug in the sim as far as what they are. For example, in the 3.0.6 SDK changelog, under simulator changes, you'll see "Fixed incorrect memory limit for watch faces on the 645m" - it was so the sim matched the device and not a change on the device.
  • Former Member
    Former Member over 6 years ago
    Tracking objects takes memory. Prior to CIQ 2.4 we used static tracking structures to track objects, and had a limit of 512 objects. It is pretty difficult to run out of 512 objects when you are only working with 64kb of memory in an app like we had when CIQ 1.0 came out. However, we started releasing CIQ on devices with significantly more memory, like our Edges, and Applications could have as much as 1MB of memory. 512 objects is pretty underwhelming in a 1MB heap. In CIQ 2.4 our heap underwent a major refactoring to use dynamic allocation to track objects (heap-ception?) so that devices with large heaps could make use of more objects and devices with small heaps could keep memory overhead low. It isn't actually technically possible to allocate 64k objects on a 124KB heap, the tracking data alone takes up more space than is available in the heap.

    The memory limits for CIQ are (except in very unusual circumstances) set in stone long before products are even released. There is definitely not memory just sitting around unused that could be allocated to CIQ.