Yes it is very deterministic on low spec device (512 mo memory, 600mhz mono core) keep google services while killing other services due to low memory. That's where you need to pick what is important yourself, and not let the developers decide, else you end up with all google services running and have a google phone instead of an android phone. With that on the table, as some devs abuse the priorities, services playing it fair never finish their tasks. Yes i need these services, but I don't need them more than others.
If all services are doing something and there's not enough memory, one of the service will have to stop, suspending it's task (meaning it will not finish on time, of course, maybe the file currently uploading will finish, but not the whole folder)
You cannot magically finish tasks for each services when there's no memory for it. Some process currently doing work will have to stop it's work to leave room, if it stop, it obviously won't continue it's work.
The article explain very well how things happens in Android's carebear land, but that's not real life, that's theoretical stuff that will probably happen when your device has not specs lower than what the guys that wrote it tough it would happen.
The article is right, it does work like that on my test high end device with 4Gb of ram, it works like a charm and services I do need running doesn't get killed. But on low end device only the most aggressive service stays, and it seems some developers are champions at keeping non critical stuff running, some of them being OEMs or Google themselves, you can report what you want it doesn't change.+Pat Gunn
And the majority of the time, the device will house more than 512 mo of memory and a 600mhz processor. Who do we need to pressure if a service gets killed, the devs of said service, or the devs of other services doing tasks you don't need right now but that has better knowledge at how android internals work to keep their service running ? How many people are required to pressure facebook to stop being a champion at keeping useless services running ? Same for Google. Guess we cannot, that's why in the end, the user should be able to have the last word : "Yes contacts sync is important to me, keep it untouched, no gcm is not important to me, you can kill it before other services".
Solution to notification abuse was to allow end user to hide application's notifications.
Solution to service abusive behavior is probably to allow end user to flag it as low priority and get it killed first instead of last.