Dear Omer,
Assuming you are calling an odata service somewhere external and not providing it..
Is your microflow completing? If it does then the garbage collection will do the clean-up later.
I see your cpu is > 100%, thats interesting.
Could it be that you're retrieves are looping?
Anyway maybe rephrase what problem you are facing and add a picture of your microflows...
Kind regards
Jacob
What i normally do is add 'EndTransaction' and 'StartTransaction' (available in CommunityCommons) after each commit before returning to the retrieve action and process the next batch. This way the memory will be released after each commit and the MF will not slow down. You can test the behavior locally by downloading visualVM and connecting it to your SDK. Within the program you can check a graph which shows the used memory within a thread.
Another cleaner option would be to process the batches in a queue, this takes some more time to setup but you won't need the Java actions. GL!