有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java DalvikVM垃圾收集器会停止整个VM吗?

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

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


共 (1) 个答案

  1. # 1 楼答案

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

    • Pre-Gingerbread GC:

      • Stop-the-world

      • Full heap collection

      • Pause times often > 100ms

    • Gingerbread and beyond:

      • Concurrent (mostly)

      • Partial collections

      • Pause times usually < 5ms

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

    为什么需要一毫秒的精度