hyengine垃圾回收问题之过程卡顿如何解决

简介: hyengine垃圾回收问题之过程卡顿如何解决

问题一:hygc 相较于 quickjs 原生 gc 有哪些改进和优势?


hygc 相较于 quickjs 原生 gc 有哪些改进和优势?


参考回答:

hygc 相较于 quickjs 原生 gc,在设计和实现上进行了多项改进。首先,它参考了 v8 等先进引擎的 gc 设计思路,旨在实现一套适用于移动端业务的轻量级、高性能、实现简单的 gc。其次,hygc 采用了多线程三色 gc 方案,以尽可能减少 gc 暂停时间并降低 js 执行耗时。此外,hygc 未引入分代支持,因为在实际业务 case 测试中发现内存使用量并不大。这些改进使得 hygc 在减少 gc 耗时和内存碎片化方面表现更优,同时减少了 jit 生成的代码中引用计数操作的指令数量,降低了代码体积。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666234



问题二:hygc 如何确保垃圾回收过程中的业务体验不出现卡顿?


hygc 如何确保垃圾回收过程中的业务体验不出现卡顿?


参考回答:

为了确保垃圾回收过程中的业务体验不出现卡顿,hygc 严格控制了 gc 的暂停时间。具体来说,它将 gc 的暂停时间控制在 30ms 内,这是通过多线程三色 gc 方案实现的。该方案能够在多线程环境下高效地进行垃圾回收,同时减少了对主线程执行的影响,从而保证了业务逻辑的流畅运行。此外,hygc 还可以根据实际业务需求和设备性能进行参数调整,以进一步优化 gc 性能。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666235



问题三:hygc 计划提供哪几种业务策略来满足不同使用场景的性能需求?


hygc 计划提供哪几种业务策略来满足不同使用场景的性能需求?


参考回答:

hygc 计划提供三种业务策略以满足不同使用场景的性能需求,包括无 gc、闲时 gc 和默认 gc。无 gc 策略在运行期不触发 gc 操作,仅在代码完全运行完毕销毁 runtime 时做一次 full gc。闲时 gc 策略同样在运行期不触发 gc,但在代码运行结束后在异步线程进行 gc。默认 gc 策略则会在运行期触发 gc。业务可以根据实际需求选择 gc 策略,并建议设置 gc 策略开关以避免非预期结果。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666236



问题四:hygc 的多线程三色标记 gc 相较于单线程版本有哪些改进?


hygc 的多线程三色标记 gc 相较于单线程版本有哪些改进?


参考回答:

hygc 的多线程三色标记 gc 相较于单线程版本,主要改进在于减少了 js 线程在 gc 过程中的暂停时间,降低了业务卡顿的风险。在多线程版本中,js 线程负责根对象收集及老对象转移到异步 gc 链表,然后继续执行,而 gc 线程则负责老对象的标记和垃圾收集。此外,为了兼容 hymalloc 的非线程安全性,垃圾对象的释放被拆分为两个阶段,分别在 gc 线程和 js 线程中执行。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666237



问题五:hygc 的异步线程 gc 在处理新对象时存在什么局限性?


hygc 的异步线程 gc 在处理新对象时存在什么局限性?


参考回答:

hygc 的异步线程 gc 在处理新对象时存在一个局限性,即完成老对象转移后的新对象将不会参与当前轮次的 gc。这可能会导致内存使用峰值的提升,提升程度与 gc 线程的执行耗时相关。为了解决这个问题,后续将根据实际情况评估是否进行方案优化。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666238

相关文章
|
6月前
|
JavaScript Java 开发工具
Electron V8排查问题之接近堆内存限制的处理如何解决
Electron V8排查问题之接近堆内存限制的处理如何解决
365 1
|
6月前
|
存储
hyengine 优化问题之代码耗时如何解决
hyengine 优化问题之代码耗时如何解决
|
9月前
|
缓存 前端开发 JavaScript
面试官 : 首屏加载速度慢怎么优化?
面试官 : 首屏加载速度慢怎么优化?
|
缓存 Java 程序员
如何写出高性能代码(三)优化内存回收(GC)
可复用性在这里指的是,大多数的对象都是可以被复用的,这些可以被复用的对象就没必要每次都新建出来,浪费内存空间了。 处了巧用数据特性 中的例子,我这里再个Java中已经被用到的例子,这个还得从一段奇怪的代码说起。
78 0
|
SQL canal 运维
JVM第六讲:线上环境 FGC 频繁,如何解决?
JVM第六讲:线上环境 FGC 频繁,如何解决?
316 0
|
缓存 JavaScript 前端开发
图解 Google V8 # 22 :关于内存泄漏、内存膨胀、频繁垃圾回收的解决策略(完结篇)
图解 Google V8 # 22 :关于内存泄漏、内存膨胀、频繁垃圾回收的解决策略(完结篇)
412 0
图解 Google V8 # 22 :关于内存泄漏、内存膨胀、频繁垃圾回收的解决策略(完结篇)
|
SQL 存储 缓存
接口性能优化技巧,干掉慢代码!
接口性能优化技巧,干掉慢代码!
接口性能优化技巧,干掉慢代码!
|
缓存 算法 安全
如何写出高性能代码之优化内存回收(GC)
同一份逻辑,不同人的实现的代码性能会出现数量级的差异; 同一份代码,你可能微调几个字符或者某行代码的顺序,就会有数倍的性能提升;同一份代码,也可能在不同处理器上运行也会有几倍的性能差异;十倍程序员 不是只存在于传说中,可能在我们的周围也比比皆是。十倍体现在程序员的方法面面,而代码性能却是其中最直观的一面。
251 0
如何写出高性能代码之优化内存回收(GC)
|
存储 监控 算法
【Android 内存优化】内存抖动 ( 垃圾回收算法总结 | 分代收集算法补充 | 内存抖动排查 | 内存抖动操作 | 集合选择 )
【Android 内存优化】内存抖动 ( 垃圾回收算法总结 | 分代收集算法补充 | 内存抖动排查 | 内存抖动操作 | 集合选择 )
239 0
【Android 内存优化】内存抖动 ( 垃圾回收算法总结 | 分代收集算法补充 | 内存抖动排查 | 内存抖动操作 | 集合选择 )
|
运维 监控 Java
面试官:线上环境 FGC 频繁,如何解决?
前言 这个问题应该是Java 面试中很经常被问到的一个题目,很多人害怕这个题目。 因为大部分人可能在工作中根本遇不到 FGC 频繁的问题,即使从网上背了点答案,心里也不踏实,因为毕竟不是自己亲自接触和解决过。 今天就和大家聊聊面试过程中遇到这个问题,该如何解答。
287 0

相关实验场景

更多