垃圾收集运行时成本的大O分析

2024-01-11

当推理垃圾收集语言中的运行时成本时,诸如以下语句的成本是多少:myList = null;用“n”(列表中的元素数量)表示?为了便于论证,请将该列表视为引用类型的单链表,无需终结。

更一般地说,我正在寻找有关如何使用 GC 语言分析运行时成本的任何信息。


我自己的想法是,成本可能是 O(1) 或 O(n),具体取决于收集器的实现。在标记和清除收集器中,根本无法到达无法访问的对象,因此我可以想象清除它们不会产生任何成本。 (事实上​​,仅仅让对象保持活动状态就存在持续的成本,大概可以通过使用代数来摊销。)相反,在一个简单的引用计数收集器中,我可以很容易地想象它花费 O(n) 来进行清理......

对我来说,在设计算法时如何推理这一点并不明显。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

垃圾收集运行时成本的大O分析 的相关文章

  • 抑制 C# 垃圾回收

    我的应用程序分配大量内存 数百万个小对象 总计几千兆字节 并保留很长时间 NET 是否浪费时间检查所有这些数据来对其进行 GC 第 2 代 GC 检查所有对象的 GC 多久发生一次 有什么办法可以降低它的发生频率或者暂时抑制它的发生吗 我确
  • C# 获取分配总数

    有没有办法获得分配总数 注意 分配数量 而不是分配的字节数 它可以是当前线程的 也可以是全局的 以更容易的为准 我想检查特定函数分配了多少个对象 虽然我了解 调试 gt 性能分析器 Alt F2 但我希望能够从程序内部以编程方式执行此操作
  • Java应用程序cpu负载过高的解决办法

    今天 我发现我的服务器的cpu负载太高 并且服务器只运行一个Java应用程序 下面是我的操作步骤 I used top命令查找应用程序的 pid pid是25713 I used top H p 25713命令查找一些使用最多 cpu 的
  • .Net 与 Java 垃圾收集器

    有谁知道 Java 和 Net 垃圾收集器之间的主要区别 网上搜索并没有透露太多信息 这是一个测试中出现的问题 区别在于 CLR Net GC 和 JVM GC 之间 而不是语言本身 两者都可能发生变化 并且其行为规范宽松 允许在不影响程序
  • Google Chrome 中 array.splice() 的时间复杂度是多少?

    如果我使用 splice 从数组中删除一个元素 如下所示 arr splice i 1 这会是O n 在最坏的情况下 因为它会移动 i 之后的所有元素 或者它是常数时间 下面有一些链表魔法 最坏的情况下should be O n 复制所有n
  • 对 Big O 表示法仍然有点困惑

    所以我一直在尽力理解 Big O 表示法 但仍然有一些事情我感到困惑 所以我一直读到如果某件事是 O n 那么它usually指的是算法的最坏情况 但它不一定要指最坏的情况 这就是为什么我们可以说插入排序的最佳情况是 O n 但是 我无法真
  • 如何管理返回到 QML 的动态分配的 QObject 的生命周期?

    我有这个代码 QVariant componentFromCode QString code QQmlComponent component new QQmlComponent engine engine gt setObjectOwner
  • for循环内递归函数的时间复杂度

    如果我们有一个函数 int x 0 int fun int n if n 0 return 1 for int i 0 i
  • 如何在 Windows 7 中模拟内存不足的情况

    我有一个用 C 编写的应用程序 运行良好 但有时在现场会出现错误 我们认为这些错误是由于内存不足或与垃圾收集器的交互造成的 如果有人感兴趣 这里有描述 无法将 NHibernate Impl ExpandedQueryExpression
  • O(mn) 比 O((m+n)^2) 更好吗?

    算法的输入是m and n 我的算法的时间复杂度是O mn 我有一个时间复杂度为的基准算法O m n 我的实现在时间复杂度方面是否优于基准 许多评论者和回答者希望只考虑以下情况 m n或者至少当它们通过一个常数因子相关时 这不是它的工作原理
  • 一旦组件被销毁,在 initComponent 函数中创建的存储是否会发生内存泄漏,或者这些存储是否会被垃圾收集?

    这是从另一个问题中衍生出来的一个问题 在 ExtJS 4 中具有相同视图并多次存储的最佳实践 https stackoverflow com questions 27333787 best practice to have the same
  • 运行“git gui”时如何跳过“松散对象”弹出窗口

    当我运行 git gui 时 我会看到一个弹出窗口 上面写着 This repository currently has approximately 1500 loose objects 然后它建议压缩数据库 我之前已经这样做过 它将松散对
  • 最慢的计算复杂度(Big-O)

    在这些算法中 我知道 Alg1 是最快的 因为它是 n 平方的 接下来是 Alg4 因为它是 n 的立方 然后 Alg2 可能是最慢的 因为它是 2 n 这应该具有非常差的性能 然而Alg3和Alg5在我的阅读速度方面还没有遇到过 这两种算
  • 使用对话框周围的语句来确保垃圾收集

    我们有一个包含数千个表单的 Windows 窗体应用程序 其中许多通过 ShowDialog 方法临时显示为对话框 该应用程序已经存在多年 我们发现由于表单或其使用的控件中的各种资源泄漏 许多表单没有及时进行垃圾收集 具体来说 我们发现了未
  • Chrome 内存/垃圾收集问题

    我在使用 Chrome 时遇到内存 垃圾收集问题 我正在开发一个照片上传网站 该网站允许我的客户使用 HTML5 和文件 API 拖放照片进行上传 因此这在 IE 中不起作用 它仅适用于 Chrome 和 FF 我还没有在 Safari O
  • 如果加载 dylib,垃圾收集工作队列会崩溃

    我们正在将应用程序从 10 6 移植到 10 8 我正在查看我们在应用程序中加载的 dylib 我面临着非常不寻常的崩溃垃圾收集工作队列并附有以下消息 malloc Thread suspend unable to suspend a th
  • Ruby on Rails 中的垃圾收集器?

    我尝试在 Google 上搜索很多有关 Rails 垃圾收集器的信息 但没有得到可靠的答案 有谁有资源来展示如何垃圾收集是在 Rails 中实现的吗 我们怎样才能控制它呢 Rails 是一个框架 而不是一种语言 Rails 背后的语言称为
  • 这种双重实例是否有害,或者根本没有必要?

    在仔细阅读遗留资源时 我发现了这一点 DataSet myUPC new DataSet myUPC dbconn getDataSet dynSQL Resharper 正确地将其中的 new Dataset 部分 灰显 并建议 删除多余
  • 匿名监听器与弱引用不兼容吗?

    我正在阅读刚刚被问到的这个问题 避免回调中的内存泄漏 https stackoverflow com questions 8475314 我很困惑 直到有人回答了以下问题 这种方法的问题是你不能拥有一个仅在集合中引用的侦听器 因为它会随机消
  • 应用程序中 GC 长时间暂停

    我当前运行的应用程序需要最大堆大小为 16GB 目前我使用以下标志来处理垃圾收集 XX UseParNewGC XX UseConcMarkSweepGC XX CMSInitiatingOccupancyFraction 50 XX Di

随机推荐