【问题标题】:Does the DalvikVM Garbage Collector halt the whole VM?DalvikVM 垃圾收集器是否会停止整个 VM?
【发布时间】:2012-12-01 08:54:06
【问题描述】:

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

我正在考虑引入另一个线程并赋予它轮询重要数据的任务。但是我不确定 GC 是挂起所有线程还是只挂起占用内存的线程?

【问题讨论】:

    标签: java android dalvik


    【解决方案1】:

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

    • 预姜饼GC:

      • 停止世界

      • 完整堆收集

      • 暂停时间经常> 100ms

    • 姜饼及其他:

      • 并发(大部分)

      • 部分集合

      • 暂停时间通常

    一般来说,垃圾收集必须停止整个 VM,尽管现在这个时间大大减少了。然而,VM 和 Android 平台作为一个整体都不是实时操作系统,所以不要指望如此严格的保证。

    为什么需要单毫秒精度?

    【讨论】:

    • 我正在从内核获取系统事件流。如果未及时读取流,则丢弃事件。垃圾收集暂停虚拟机对我来说可能很麻烦。我不确定超过它会出现问题的确切时间阈值,但 100 毫秒肯定太高了。 5 ms 可能有问题,也可能没有问题;我得做一些实验。谢谢。
    猜你喜欢
    • 2018-01-06
    • 2011-03-05
    • 2023-03-21
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    相关资源
    最近更新 更多