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

sha*_*eel 5 java android dalvik

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

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

Tom*_*icz 9

Patrick Dubroy的Android应用程序内存管理中,我发现了以下内容(幻灯片16,重点是我的):

  • 前姜饼GC:

    • 停止这世界

    • 完整的堆集合

    • 暂停时间通常> 100ms

  • 姜饼及其他:

    • 并发(主要)

    • 部分收藏

    • 暂停时间通常<5毫秒

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

为什么需要单毫秒精度?