我的情况是,我的Android应用程序无法及时执行软实时任务,因为调用垃圾收集器需要几毫秒。给GC几分钟的时间不足以错过从IO设备读取数据的小任务的一些重要期限。
我正在考虑引入另一个线程并为其提供轮询重要数据的任务。但是我不确定GC是暂停所有线程还是暂停内存?
答案 0 :(得分:9)
在Memory Management for Android Apps by Patrick Dubroy我找到了以下内容(幻灯片16,强调我的):
前姜饼GC:
停止的环球
完整堆集合
暂停时间通常为> 100ms的强>
姜饼及其他:
并发(主要是)
部分馆藏
暂停时间通常为< 5ms的强>
通常,垃圾收集必须停止整个VM,尽管现在这次大大减少了。然而,VM和Android平台整体上都不是实时操作系统,所以不要指望这样严格的保证。
为什么需要单毫秒精度?