I have a situation in which an my Android application is not able to perform a soft real time task well in time as Garbage Collector is called which takes a few milliseconds. The few ms of time given to GC is inadequate to miss some important deadline for small tasks of reading data from IO device.
I was thinking about introducing another thread and giving it the task of polling the important data. However I’m not sure if GC suspends all threads or just the memory hogging ones?
In Memory Management for Android Apps by Patrick Dubroy I found the following (slide 16, emphasis mine):
In general, garbage collection must stop the whole VM, although nowadays this time greatly reduced. However neither VM nor Android platform as a whole are not real-time operating systems so don’t expect such strict guarantees.
Why do you need single millisecond precision?