Lines Matching refs:GC

1 # GC垃圾回收
3 GC(全称 Garbage Collection),即垃圾回收。在计算机领域,GC就是找到内存中的垃圾,释放和回收内存空间。当前主流编程语言实现的GC算法主要分为两大类:引用计数和对象追踪(即Tra…
5 在ArkTS中,数据类型分为两类,简单类型和引用类型。简单类型内容直接保存在栈(Stack)中,由操作系统自动分配和释放。引用类型保存在堆(heap)中,需要引擎进行手动释放。GC就是针对堆空间的内…
89 注:该线程池主要用于执行GC流程中的并发任务,实际线程池初始化综合参考gcThreadNum以及线程上下限,gcThreadNum为负值时初始化线程池线程数 = CPU核心数/2
97 | longPauseTime | 40ms | 判断是否为超长GC界限,超长GC会触发完整GC日志信息打印,方便开发者定位分析。可通过`gc-long-paused-time`进行配置 |
101 ## GC流程
106 ### HPP GC
108 HPP GC(High Performance Partial Garbage Collection),即高性能部分垃圾回收,其中“High Performance”主要三方面,包含分代模型、混合算…
110 #### Young GC
112 - **触发机制:** 年轻代GC触发阈值在2MB-16MB变化,根据分配速度和存活率等会变化。
117 #### Old GC
119 - **触发机制:** 老年代GC触发阈值在20MB-300多MB变化,大部分情况,第一次Old GC的阈值在20M左右,之后会根据对象存活率,内存占用大小进行阈值调整。
120 - **说明:** 对年轻代和部分老年代空间做整理压缩,其他空间做sweep清理。触发频率比年轻代GC低很多,由于会做全量mark,因此GC时间会比年轻代GC长,单次耗时约5ms~10ms。
124 #### Full GC
126 …:** 不会由内存阈值触发。应用切换后台之后,如果预测能回收的对象尺寸大于2M会触发一次Full GC。DumpHeapSnapshot 和 AllocationTracker 工具默认会触发Fu…
131 此后的Smart GC或者 IDLE GC 都是在上述三种GC中做选择。
135 #### 空间阈值触发GC
139 - 说明:对象申请空间到达对应空间阈值时触发GC
142 #### native绑定大小达到阈值触发GC
148 #### 切换后台触发GC
151 - 说明:切换后台主动触发一次Full GC
153 GC 日志中可区分GCReason::SWITCH_BACKGROUND
163 #### new space GC前后的阈值调整
166 - 说明: 在GC后调整SemiSpace触发水线,优化空间结构。
167 - 典型日志:无直接日志,可以通过GC统计日志看出,GC前 young space 的阈值有动态调整。
178 - 说明:根据当前GC统计的数据变化重新计算调整`newOldSpaceLimit`,`newGlobalSpaceLimit`,`globalSpaceNativeLimit`和增长因子。
184 - 说明:PartialGC执行时采用该策略选择存活对象数量少,回收代价小的Region优先进行GC
204 ### Smart GC
208 …tGC对worker线程和taskpool线程不生效)GC触发水线临时调整到js堆最大值(js线程默认448MB),尽量避免触发GC导致应用掉帧。如果敏感场景持续时间过久,对象分配已经达到了堆最大…
225 标记性能敏感场景,在进入和退出性能敏感场景时,在堆上标记,避免不必要的GC,维持高性能表现。
231 默认情况下详细的GC日志仅在GC耗时超过40ms的情况下才会打印,如果需要开启所有GC执行的日志需要使用命令在设备中开启。
236 # 设置开启GC全量日志参数,开启参数为0x905d,关闭GC全量日志,设置为默认值为0x105c
244 以下日志为一次GC完整执行后的统计信息,具体到GC的类型不同会有一些差异。开发者可以在导出的日志文件中搜索关键词`[gc]`查看GC相关的日志,也可以查看关键词`ArkCompiler`查看更为全面…
247 // GC前对象实际占用大小(region实际占用大小)->GC后对象实际占用大小(region实际占用大小),总耗时(+concurrentMark耗时),GC触发原因。
249 // GC运行时的各种状态以及应用名称
251 // GC运行时的各阶段耗时统计
252 C03F00/ArkCompiler: [gc] /***************** GC Duration statistic: ****************/
260 // GC后各个部分占用的内存大小
261 C03F00/ArkCompiler: [gc] /****************** GC Memory statistic: *****************/
278 // 该虚拟机的此类型GC的整体统计
279 C03F00/ArkCompiler: [gc] /***************** GC summary statistic: *****************/
288 …应的耗时,基本的包括`Initialize`、`Mark`、`MarkRoots`、`ProcessMarkStack`、`Sweep`、`Finish`,实际根据不同的GC流程不同会有不同的阶段。
302 ## GC开发者调试接口
311 - 作用:调用后由VM主动触发判断当前是否适合进行一次full GC。后台场景、内存预期存活率低于设定值,则会触发,判断为敏感状态则不会触发。
312 - 使用场景:开发者提示系统进行GC