Your last screenshot shows you have 147 frame values, which is time, x, y
for 49 keys. It looks like you are using the 3.8 runtimes, which store 19 values for the Bezier segments for each key. The last key doesn't have a curve, so 48 * 19 = the 912 you see. Note that in 3.8 the 19 values are taken up even for linear and stepped keys.
What version of the Spine Runtimes are you using? You can check memory usage using 4.0, which stores curves more efficiently. It uses 18 values per curve and keys that are linear or stepped don't take up any extra space. I would be interested to see similar screenshots using 4.0.
Some ways to reduce memory is to use fewer keys, use fewer Bezier keys (in 4.0), and, more importantly, to avoid using mesh deform keys. This explains why:
Keys - Spine User Guide: Deform keys
If you want to avoid storing the 18 values per Bezier, you could rewrite parts of the runtime to store 4 values (x,y
for two Bezier control handles) and then compute the segments every time they are needed (basically move the code from setBezier
into getBezierValue
). This is a pretty significant amount of work though, and while you will use less memory, you will use a little more CPU.