JVM 收集时间是否随 JVM RAM 大小呈指数增长?

2023-12-27

我听到一位同事说:

JVM 垃圾收集时间随着 JVM 大小呈指数增长。这是因为引用树是要分配的对象数量的函数,并且随着对象数量的增加,遍历树的难度呈指数级增长。

这听起来是对的。

我听到另一位同事说:

同一台机器上的 JVM 垃圾回收是线性的。如果将 8GB JVM 拆分为同一台机器上的两个 4G JVM(通过微服务),则将具有相同的垃圾收集持续时间,因为相同的操作系统会减慢相同数量的对象的速度。

这看起来不对——因为两个较小的 JVM 上的对象树应该更浅并且更容易遍历。

我的问题是:JVM 收集时间是否随 JVM RAM 大小呈指数增长?

假设:使用 Oracle JVM。


虽然霍尔格斯的解释是正确的,但我想提出稍微不同的方面。 GC 花费的时间与活动集中活动对象的数量成正比。这很容易证明。假设我们有两个堆大小相同的应用程序。在第一个堆中,我们分配 10 个对象,每个对象 100 MB,在第二个堆中,我们分配 1000 万个对象,每个对象 100 字节。在下一次GC时,每个应用程序中的一半对象无法访问(死亡)并且可以被收集。

不言而喻,追踪对象最多的图会花费更长的时间。

(顺便说一句,我记得读过“浅而宽”与“深而窄”的测量结果,没有明显的差异,但我不记得在哪里。@Holger:如果你有来源,我很乐意阅读)

请注意,遵循既定的 Java 编码实践实际上将确保实时集很小。 JVM 希望您以这种方式进行编码,并竭尽全力帮助保持实时集较小,逃逸分析 https://dzone.com/articles/do-not-let-your-java-objects-escape这只是热点的一个技巧。

所以,简而言之:NO

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

JVM 收集时间是否随 JVM RAM 大小呈指数增长? 的相关文章

随机推荐

  • 仅当我激活工作表时,VBA 复制和粘贴才有效

    我正在工作表之间复制一些范围 但我不知道为什么只有在复制或粘贴工作表之前激活工作表时它才有效 这有效 s Activate s Range Cells 2 8 Cells lrow 8 Copy d Activate d Range Cel
  • Javascript 解析/评估顺序?

    这可能是一个棘手的问题 但我不明白为什么会这样 这会发出警报 function foo 但我希望在定义函数 foo 之前评估警报 有人可以解释我对解析 评估顺序的不理解 或者指出我不理解的资源吗 JavaScript 与 PHP 一样 跟踪
  • null 或empty 的更简单写法?

    我确信我在这里错过了一些东西 对于某个项目 我需要检查字符串是否为空或为空 有没有更简单的方法来写这个 if myString myString null 是的 有String IsNullOrEmpty https msdn micros
  • 字符串连接可以用于包含 SpEL 的应用程序 yml 值吗?

    我正在尝试定义一个 Spring 数据源 url 如下所示 spring datasource url jdbc vcap services compose for mysql credentials uri useSSL true req
  • 在 Rust 中逐行读取大文件[重复]

    这个问题在这里已经有答案了 我的 Rust 程序旨在逐行读取非常大 最多几 GB 的简单文本文件 问题是 这个文件太大 无法一次读取 或者将所有行传输到一个Vec
  • IntelliJ 自动完成替换函数名称

    我已经从 Eclipse 切换到 IntelliJ 但有一些东西我还没有找到 也没有在 google 上找到 How to get the autocomplete to replace the name of the function I
  • 无法销毁 Firebase 连接,导致热 Lambda 由于“Firebase 应用程序名称‘[DEFAULT]’已存在”而失败

    几个小时以来我一直在尝试我能想到的每一种方法 基本上 我正在运行一个 AWS Lambda 函数 它以客户端和服务器角色对我的 Firebase 应用程序执行一些工作 在 Lambda 上 我需要能够逆转firebase initializ
  • 多边形分解——去除凹点形成凸多边形

    我想解构以下以蓝色显示的多边形 从多边形中删除导致凹面的所有点 目前 我一直在尝试做的是 将每个点从多边形中取出 测试该点以查看它是否落在由该集合的其余部分创建的多边形内 如果为 true 则删除该点 如果为假 请保留要点 这在大多数情况下
  • 以“Managed”结尾的类名是什么意思 (C# .NET)?

    我对 C 比较陌生 所以请耐心等待 我了解托管代码和非托管代码之间的基本区别 但我仍然有点困惑何时使用某些方法 例如 某些类名称结尾中的 托管 一词意味着什么 这是否意味着他们受到管理 而其他所有人员则不受管理 例如 两者之间有什么区别Ae
  • iOS 12 iPad 拒绝启动请求 - Xcode

    直到昨天 我已经更新一个应用程序 5 年多了 没有出现任何问题 我将 iPad 更新到了 iOS 12 但是每次尝试运行它时 我都会收到以下消息 iPad 拒绝了发布请求 我在其他装有 iOS 11 的物理设备和模拟器上进行了测试 只有 i
  • 在 Ext.data 上下文中,JsonStore 和 JsonReader 之间的基本区别是什么?

    在 Ext data 上下文中 JsonStore 和 JsonReader 之间的基本区别是什么 我的意思是 当我应该使用 JsonStore 和当我应该使用 JsonReader 时 两者都提供相同的解决方案 实际上它们是两个不同的东西
  • 如何从 Firefox Add-on SDK 扩展启动正常下载

    我正在为 Firefox 开发附加 SDK 扩展 我发现我需要能够像用户请求一样启动下载 即显示正常的文件保存对话框或将文件保存到用户喜欢的任何位置 因为它可以在首选项 gt 内容下配置 有关下载的每一篇文章或文档似乎只考虑了我知道在哪里下
  • Express.js 服务器端渲染 - 请求'/json/version/

    我有一个正在运行的快速服务器来预渲染我的反应应用程序 我有一个将 HomeContainer 与基本路线相匹配的路线文件 并且所有其他路由都与未找到的页面匹配 import HomeContainer from containers hom
  • Android:带有自定义微调器下拉 xml 布局的自定义适配器出现错误

    我有一个带有自定义适配器的微调器 我用它来将微调器下拉中的第一个元素的高度设置为零 我这样做是为了在微调器 第一个元素 中显示默认消息 而用户无法单击它 因为它不可见 package org digitalhealthagency elaj
  • opencv中的solvePnP和calibrateCamera有什么区别?

    calibrateCamera 提供rvec tvec distCoeff and cameraMatrix然而solvePnP takes cameraMatrix distCoeff作为输入并提供rvec tvec作为输出 这两个函数有
  • Laravel 5 中的切换 - Blade

    如何在刀片模板中使用开关 当我使用时 switch login error case 1 E mail input is empty break case 2 Password input is empty break endswitch
  • 未初始化常量 ActionDispatch::Session::EncryptedCookieStore (NameError)

    我和乘客一起乘坐 4 号铁轨 一切都很顺利 直到我做了一个bundle现在 现在我遇到了以下错误 Web application could not be started uninitialized constant ActionDispa
  • 图层次布局算法

    有许多工具和 SDK 可以布局图表 ogdf GraphViz mxGraph yEd 有用的布局之一是 分层布局 但没有纯粹的算法或伪代码来描述它 甚至 这种类型的布局还没有明确的定义 有人了解算法吗 source yworks com
  • 更改 __init__ 中的类属性

    我正在看堆栈溢出问题计算一个类的实例 https stackoverflow com questions 8628123 counting instances of a class 我不确定为什么该解决方案有效 而使用简单加法的解决方案却无
  • JVM 收集时间是否随 JVM RAM 大小呈指数增长?

    我听到一位同事说 JVM 垃圾收集时间随着 JVM 大小呈指数增长 这是因为引用树是要分配的对象数量的函数 并且随着对象数量的增加 遍历树的难度呈指数级增长 这听起来是对的 我听到另一位同事说 同一台机器上的 JVM 垃圾回收是线性的 如果