1e41f4b71Sopenharmony_ci# @ohos.hiviewdfx.jsLeakWatcher (js泄露检测) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci本模块提供了监控js对象是否发生泄露的能力 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci## 导入模块 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci```js 12e41f4b71Sopenharmony_ciimport { jsLeakWatcher } from '@kit.PerformanceAnalysisKit'; 13e41f4b71Sopenharmony_ci``` 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci## jsLeakWatcher.enable 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_cienable(isEnable: boolean): void; 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci使能js对象泄露检测,默认关闭 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiChecker 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_ci**参数:** 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 27e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 28e41f4b71Sopenharmony_ci| isEnable | boolean | 是 | 是否使能jsLeakWatcher | 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci**示例:** 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci```js 33e41f4b71Sopenharmony_cijsLeakWatcher.enable(true); 34e41f4b71Sopenharmony_ci``` 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci## jsLeakWatcher.watch 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ciwatch(obj: object, msg: string): void; 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci注册待检测泄露的对象 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiChecker 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci**参数:** 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 48e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 49e41f4b71Sopenharmony_ci| obj | object | 是 | 需要检测的对象名 | 50e41f4b71Sopenharmony_ci| msg | string | 是 | 自定义对象信息 | 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci**示例:** 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_ci```js 55e41f4b71Sopenharmony_cilet obj:Object = new Object(); 56e41f4b71Sopenharmony_cijsLeakWatcher.watch(obj, "Trace Object"); 57e41f4b71Sopenharmony_ci``` 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci 60e41f4b71Sopenharmony_ci## jsLeakWatcher.check 61e41f4b71Sopenharmony_ci 62e41f4b71Sopenharmony_cicheck(): string; 63e41f4b71Sopenharmony_ci 64e41f4b71Sopenharmony_ci获取已通过jsLeakWatcher.watch注册且可能发生泄露的对象列表,触发GC后未被回收的对象会被标记为泄露 65e41f4b71Sopenharmony_ci 66e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiChecker 67e41f4b71Sopenharmony_ci 68e41f4b71Sopenharmony_ci**返回值:** 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci| 类型 | 说明 | 71e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------- | 72e41f4b71Sopenharmony_ci| string | JSON格式的疑似泄漏对象列表 | 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci**示例:** 75e41f4b71Sopenharmony_ci```js 76e41f4b71Sopenharmony_cilet leakObjlist:string = jsLeakWatcher.check(); 77e41f4b71Sopenharmony_ci``` 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci 80e41f4b71Sopenharmony_ci## jsLeakWatcher.dump 81e41f4b71Sopenharmony_ci 82e41f4b71Sopenharmony_cidump(filePath: string): Array<string>; 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci导出泄漏列表和虚拟机内存快照 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiChecker 87e41f4b71Sopenharmony_ci 88e41f4b71Sopenharmony_ci**参数:** 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 91e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 92e41f4b71Sopenharmony_ci| filePath | string | 是 | 导出信息生成的文件存放的路径 | 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci**返回值:** 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci| 类型 | 说明 | 97e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------- | 98e41f4b71Sopenharmony_ci| Array<string> | 导出结果的数组,索引0为泄露列表文件名,后缀为.jsleaklist,索引1为虚拟机内存快照文件名,后缀为.heapsnapshort | 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci**错误码:** 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 105e41f4b71Sopenharmony_ci| ------- | ----------------------------------------------------------------- | 106e41f4b71Sopenharmony_ci| 401 | Parameter error. The filepath is invalid. | 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci**示例:** 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci```js 111e41f4b71Sopenharmony_cilet context = getContext(this); 112e41f4b71Sopenharmony_cilet files:Array<string> = jsLeakWatcher.dump(context.filesDir); 113e41f4b71Sopenharmony_ci```