DalvikVM垃圾收集器是否会停止整个VM?

时间:2012-12-01 08:54:07

标签: java android dalvik

我的情况是,我的Android应用程序无法及时执行软实时任务,因为调用垃圾收集器需要几毫秒。给GC几分钟的时间不足以错过从IO设备读取数据的小任务的一些重要期限。

我正在考虑引入另一个线程并为其提供轮询重要数据的任务。但是我不确定GC是暂停所有线程还是暂停内存?

1 个答案:

答案 0 :(得分:9)

Memory Management for Android Apps by Patrick Dubroy我找到了以下内容(幻灯片16,强调我的):

  
      
  • 前姜饼GC:

         
        
    • 停止的环球

    •   
    • 完整堆集合

    •   
    • 暂停时间通常为> 100ms的

    •   
  •   
  • 姜饼及其他:

         
        
    • 并发(主要是)

    •   
    • 部分馆藏

    •   
    • 暂停时间通常为< 5ms的

    •   
  •   

通常,垃圾收集必须停止整个VM,尽管现在这次大大减少了。然而,VM和Android平台整体上都不是实时操作系统,所以不要指望这样严格的保证。

为什么需要单毫秒精度?