Android 垃圾收集器是否会在运行时暂停其他应用程序?

2023-12-28

我发现一些关于 Android 垃圾收集器的信息与我矛盾。

Android 开发者指南 说道:

Android 3.0 是该平台的第一个版本,旨在运行于 单核或多核处理器架构。各种各样 Dalvik VM、Bionic 库和其他地方的更改增加了支持 用于多核环境中的对称多处理。这些 优化可以使所有应用程序受益,甚至是那些 单线程。例如,有两个活动核心,一个单线程 如果 Dalvik 垃圾处理应用程序仍可能会看到性能提升 收集器在第二个核心上运行。系统会对此进行安排 自动地。”

好吧,现在是另一件事

根据这个链接:Dalvik 虚拟机架构 http://davidehringer.com/software/android/The_Dalvik_Virtual_Machine.pdfandroid 使用标记和清除方法。

Dalvik 垃圾收集器当前的策略是保留标记 位,或指示特定对象的位 “可达”,因此不应被垃圾收集,单独 来自其他堆内存。

如果我们检查标记和清除在此链接上的工作原理:标记和清除垃圾收集算法 http://www.brpreiss.com/books/opus5/html/page424.html,我们可以看到:

标记和清除方法的主要缺点是 正常程序执行被暂停,而垃圾 收集算法运行。特别是,这可能是一个问题 与人类用户交互或必须满足的程序 实时执行约束。例如,一个交互式的 使用标记和清除垃圾收集的应用程序变成 周期性无反应。

所以我现在的问题是,它到底是如何运作的?垃圾收集器在工作时是否会暂停一切,或者他是否能够完全独立于其他活动处理器核心运行?


Dalvik 虚拟机位于姜饼及其他版本正在使用大部分是并发部分收集垃圾收集器的暂停时间通常在 5 毫秒左右。因此,是的,GC 正在通过停止其他应用程序来影响它们,但并发 GC 算法能够最大限度地减少这些暂停。

你应该看看:

  • Android 垃圾收集器的技术细节 https://stackoverflow.com/q/4818869/772000
  • DalvikVM 垃圾收集器是否会停止整个虚拟机? https://stackoverflow.com/q/13657904/772000

一般来说,垃圾收集理论[垃圾收集维基] http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29#Stop-the-world_vs._incremental_vs._concurrent解释:

  • 停止世界垃圾收集器完全停止程序的执行以运行收集周期

  • 增量和并发垃圾收集器旨在减少这种干扰 将他们的工作与主程序的活动交织在一起。增量垃圾收集器 在离散的阶段中执行垃圾收集周期,并且允许程序执行 每个阶段(有时在某些阶段)。

  • 并发垃圾收集器根本不停止程序执行,除非在扫描程序的执行堆栈时短暂停止。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 垃圾收集器是否会在运行时暂停其他应用程序? 的相关文章

随机推荐

  • mysql regex_replace:如何在替换中使用正则表达式组

    有一个表 id Name 1 test1 test1 test1 2 test2 test2 test2 想要选择第一个正则表达式组 使用第一个单词来简化 所以我的查询 SELECT regexp replace name alnum sp
  • emberjs 绑定数据属性

    我想知道是否有一种方法可以在调用视图时在模板中绑定数据属性 例如 这不起作用 view App SomeView data dateBinding currentDate 我最终这样做了 a a 调用视图的时候一定有办法做到吗 更多关于 k
  • 错误被杀死:命令“git add”后出现 9。

    当我执行 git add 时遇到问题 我收到一条错误消息 已杀 9 如果我再次尝试 git add 我收到另一个错误 致命 无法创建 crmeasy git index lock 文件存在 Another git process seems
  • 如何强制Android重新索引手机上的所有照片?

    我注意到 Galaxy Nexus 处理照片和文件目录的方式有些奇怪 我创建了它们 但 Android 4 2 2 在您重新启动之前并不知道它们存在 至少在我的 Nexus 4 上是这样 我正在创建一个应用程序 当拍照并将其存储在图片中时
  • 没有找到适合完成该操作的成像组件 WPF vb.net

    我使用 WPF 应用程序中的以下代码将图像插入到 mdb 数据库中 Dim con As New OleDbConnection Provider Microsoft ACE OLEDB 12 0 Data Source GetCurren
  • Twilio 加入 Google Hangouts 电话会议

    我正在使用 GSuite 附带的 Google Hangouts for Enterprise 当 Google Hangouts 会议开始时 它会提供带有 PIN 码的拨入号码 1 xxxx xxxx 3235 一些 PIN 码 3495
  • 日期范围的 URL 约定

    在友好 URL 中显示日期范围的可接受约定是什么 例如 在时间跟踪应用程序中 我希望使用用户更容易区分的内容 而不是在 URL 中使用数据库的主键来表示特定的付款周期 http www mytimesheet com 11 1 2009 1
  • 在 Perl 中检查字符串是否为空的正确方法是什么?

    我一直在使用此代码来检查字符串是否为空 if str 与不等于运算符相反 if str 这似乎有效 我认为 但我不确定这是正确的方法 或者是否存在任何不可预见的缺点 只是感觉有些不对劲 对于 Perl 中的字符串比较 请使用eq or ne
  • 如何从手机启动 Android Wear 活动

    我一直在从事一个项目 我需要手机上的按钮来启动手表上的活动 我一直在查看 sdk 中的数据层示例 但无法使其工作 我设置了一个可穿戴侦听器服务类 但它没有接收任何消息 该服务已添加到清单中 但仍然无法运行 我也有其他服务 我想我可能有太多服
  • Mockito ArgumentCaptor 返回 Null

    我正在尝试使用 Mockito ArgumentCaptor 在我的方法中获取 mime 消息 当我取回捕获对象时 它的值为空 我对调试它很陌生 但 Mockito 用增强器包装了它 所以我看不到内容 这适用于我的方法中的对象 有人有想法吗
  • Zookeeper/SASL 校验和失败

    如何修复生成此错误的问题 WARN NIOServerCxn Factory 0 0 0 0 0 0 0 0 2181 ZooKeeperServer 1040 Client failed to SASL authenticate java
  • Mercurial 如何压缩存储库中的文件?

    我发现 Mercurial 有效地压缩了存储库中的文件 repo hg store data 有谁知道存储库文件使用哪种压缩方式 Thanks Mercurial 存储库中有两个压缩级别 增量存储和zlib压缩 https www merc
  • Flask登录成功后如何重定向到上一页

    我有一个网络应用程序 我不使用 Flask 登录 如果用户访问链接但未登录 我会将用户重定向到登录页面 我在会话中设置 用户名 并检查当用户尝试直接访问某些链接而不登录时 即在这种情况下用户名将为空 我尝试遵循这个二氧化硫溶液 https
  • 如何为 Angular 2 安装和导入 paperjs?

    我尝试使用命令安装 paperjs sudo npm install paper 在我的角度应用程序文件夹中 纸张似乎出现在 node modules 文件夹中 但是当我尝试使用导入它时 import Paper from paper 它没
  • 检查触发器是否存在

    我对公共模式中所有表的触发器有以下查询 SELECT CREATE TRIGGER tab name if modified trg INSERT OR UPDATE OR DELETE ON tab name FOR EACH ROW E
  • Angular 使用变量或循环创建选择器标签

    我需要使用变量创建 app component html 的选择器标签 假设变量名称为 componentVar string 我需要我的 app component html
  • 如何为 Azure 中的每个分支设置不同的管道

    我有一个项目 但有两个 主 分支 master 虚拟 主控 他们每个人都会有自己的azure pipeline yml具体针对他们的分支机构 第一条管道在master触发器设置为 trigger batch true branches in
  • 返回花括号在 javascript 中意味着什么(例如 return { init : init} )[重复]

    这个问题在这里已经有答案了 我正在查看这段代码 function var sidescroll function init function STUFF return init init What does this do sidescro
  • 以编程方式创建 UITextField 事件

    我在创建行时以编程方式将文本字段添加到 TableView 中 我试图通过这样做来订阅这些文本字段的 TouchUpInside 事件 UITextField eTextField UITextField alloc initWithFra
  • Android 垃圾收集器是否会在运行时暂停其他应用程序?

    我发现一些关于 Android 垃圾收集器的信息与我矛盾 Android 开发者指南 说道 Android 3 0 是该平台的第一个版本 旨在运行于 单核或多核处理器架构 各种各样 Dalvik VM Bionic 库和其他地方的更改增加了