Reputation: 6005
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?
Upvotes: 5
Views: 1062
Reputation: 340733
In Memory Management for Android Apps by Patrick Dubroy I found the following (slide 16, emphasis mine):
Pre-Gingerbread GC:
Stop-the-world
Full heap collection
Pause times often > 100ms
Gingerbread and beyond:
Concurrent (mostly)
Partial collections
Pause times usually < 5ms
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?
Upvotes: 9