Hi, this is a really good question! The memory usage gets overloaded pretty fast if you've got hundreds of NPE's being made, especially if you're waiting for the garbage collector to help you out. Have you got any sort of cleanup process in place for old data, or checks for existing data before doing the REST calls?
I'm running into a similar issue with high memory usage in an app that relies heavily on NPE's for showing data. The data is quickly out of date. I chose to use a root object to associate all of my data and use between different pages to avoid unnecessary REST calls.
I've tried to solve the memory issue by putting a use-by date on my root object. That way, if the object was made more than 5 minutes ago, I retrieve my data afresh so that the user isn't running too far behind. I think I've messed up, though, in that I didn't explicitly delete the old data, which means I'm relying on the good graces of the garbage collector. This is resulting in high memory usage, I think. I'm going to try to explicitly delete the objects when they're no longer relevant and see if this helps.
I'm curious about how you've worked with this issue, and I'll keep this updated if I have any really awesome results.