java - DalvikVM 垃圾收集器会停止整个虚拟机吗?

标签 java android dalvik

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

本来想引入另外一个线程,交给它轮询重要数据的任务。但是我不确定 GC 是暂停所有线程还是只暂停占用内存的线程?

最佳答案

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 平台作为一个整体都不是实时操作系统,因此不要指望如此严格的保证。

为什么需要单毫秒精度?

关于java - DalvikVM 垃圾收集器会停止整个虚拟机吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13657904/

相关文章:

工作流引擎的Java实现

android - Android 浏览器中的 Slickgrid(内 div 滚动)

java - ViewPager : OutOfResourcesException locking surface

java - 在 Android 上的 dalvik 中动态类重新加载

android - Dalvik再造,.dex文件结构

java - 在重写 URL 时修复脚本/css 的相对路径

java - 以相同的概率选择三个数字之一?

java - 为什么 invalidate 必须由 UI 线程调用

Android:使用目标 sdk 24 打开图库相册

android - 如何在我的共享库中包含正确的包含文件以使用 libdvm.so?