I have bad experience with above 3 at the same time. When ever you use an array in FMS side coding and pass along that in Remote SharedObject you would be in trouble in in terms of bandwidth and memory usage of application. When I change anything an array i.e. add an item, update an item or delete an item, you would need to pass the whole array to shared object and that will send the full array to all connected clients to that shared object. So even if you have change single item in the full array it eats the bandwidth for full array.
So, what I learnt for it? NEVER use an array in FMS side coding when you have to pass it to Shared Object. Always use property names of shared object to identify the objects inside the shared object.