跳到主要内容

命令行界面

使用 npm 安装 memlab 命令行工具

npm install -g memlab

常用命令

memlab run

在 Web 应用程序中查找内存泄漏

memlab run --scenario <TEST_SCENARIO_FILE>

示例

memlab run --scenario /tmp/test-scenario.js
memlab run --scenario /tmp/test-scenario.js --work-dir /tmp/test-1/

选项:

  • --work-dir:设置当前运行的工作目录
  • --headful:在有头模式下启动浏览器,默认情况下为无头模式
  • --display-leak-outlines:在有头浏览器中显示泄漏的组件轮廓;与 --headful 选项一起使用
  • --full:为 E2E 交互中的每一步拍摄堆快照
  • --skip-screenshot:跳过截图
  • --skip-gc:跳过在浏览器中进行垃圾回收
  • --skip-scroll:跳过在浏览器中滚动目标页面
  • --skip-extra-ops:跳过在目标页面和最终页面上进行额外的交互(例如,滚动和等待)
  • --local-puppeteer:通过本地 puppeteer 启用远程浏览器实例调试
  • --scenario:设置加载测试场景的文件路径
  • --chromium-binary:设置 E2E 运行的 chromium 二进制文件
  • --protocol-timeout:设置 chromium 连接的协议超时时间(以毫秒为单位)。 当前默认值为 180000,当堆快照太大(例如,超过 1GB)并且页面崩溃并显示错误“ProtocolError: HeapProfiler.takeHeapSnapshot timed out”时,您可能需要通过此标志增加超时时间。
  • --device:设置要模拟的设备类型
  • --user-agent:设置浏览器中的 UserAgent 字符串(用于 E2E 交互),否则使用 Chromium 的默认 UserAgent
  • --disable-xvfb:禁用 Xvfb (X virtual framebuffer) 以模拟有头浏览器渲染
  • --disable-web-security:禁用 Chromium 中的 Web 安全性以启用跨域请求;默认情况下启用 Web 安全性
  • --rewrite-js:启用浏览器中检测 JavaScript 代码
  • --log-script:启用在浏览器中拦截和记录 JavaScript 代码
  • --worker:设置需要选择和分析的目标(worker)的标题
  • --leak-filter:为泄漏过滤器指定定义 JS 文件
  • --trace-object-size-above:保留大小(字节)大于阈值的对象将被视为泄漏
  • --ignore-leak-cluster-size-below:忽略聚合保留大小小于阈值(以字节为单位)的内存泄漏
  • --trace-all-objects:转储所有已分配对象的保留者跟踪(忽略泄漏过滤器),可用选项模式:--trace-all-objects=selected-js-objects, --trace-all-objects=default
  • --save-trace-as-unclassified-cluster:将每个保留者跟踪转储为未分类的跟踪集群
  • --ml-clustering:使用机器学习算法对泄漏跟踪进行聚类(默认情况下,跟踪按启发式方法聚类)
  • --ml-linkage-max-dist:设置聚类的联动最大距离值。 该值应介于[0, 1]含。
  • --ml-clustering-max-df:设置基于百分比的最大文档频率,以限制出现过于频繁的术语
  • --clean-up-snapshot:运行后清理堆快照
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab find-leaks

在堆快照中查找内存泄漏

有三种方法可以为 memlab find-leaks 命令指定输入

  1. --baseline--target--final 单独指定每个堆快照输入;
  2. --snapshot-dir 指定包含所有三个堆快照文件的目录(MemLab 将根据文件的字母顺序分配基线、目标和最终快照);
  3. --work-dir 指定 memlab runmemlab snapshot 命令的输出工作目录;

请仅使用上述三种方法之一来指定输入。

您还可以手动在 Chrome Devtools 中拍摄堆快照,将其保存到磁盘。 然后使用带有 CLI 标志(上述选项 1 或选项 2)的此命令处理它们。

# check memory leaks in the default working directory generated by
# memlab run (without setting the --work-dir option)
memlab find-leaks

示例

# specify the baseline, target, and final heap snapshot file path separately
memlab find-leaks --baseline /tmp/baseline.heapsnapshot --target /tmp/target.heapsnapshot --final /tmp/final.heapsnapshot
# specifies the directory that holds all three heap snapshot files
memlab find-leaks --snapshot-dir /dir/containing/heapsnapshot/files/
# specifies the output working directory of the `memlab run` or the `memlab snapshot` command
memlab find-leaks --work-dir /memlab/working/dir/generated/by/memlab/

选项:

  • --baseline:设置基线堆快照的文件路径
  • --target:设置目标堆快照的文件路径
  • --final:设置最终堆快照的文件路径
  • --snapshot-dir:设置包含分析下的所有堆快照的目录路径
  • --engine:设置 JavaScript 引擎(默认为 V8)
  • --leak-filter:为泄漏过滤器指定定义 JS 文件
  • --trace-object-size-above:保留大小(字节)大于阈值的对象将被视为泄漏
  • --ignore-leak-cluster-size-below:忽略聚合保留大小小于阈值(以字节为单位)的内存泄漏
  • --trace-all-objects:转储所有已分配对象的保留者跟踪(忽略泄漏过滤器),可用选项模式:--trace-all-objects=selected-js-objects, --trace-all-objects=default
  • --save-trace-as-unclassified-cluster:将每个保留者跟踪转储为未分类的跟踪集群
  • --ml-clustering:使用机器学习算法对泄漏跟踪进行聚类(默认情况下,跟踪按启发式方法聚类)
  • --ml-linkage-max-dist:设置聚类的联动最大距离值。 该值应介于[0, 1]含。
  • --ml-clustering-max-df:设置基于百分比的最大文档频率,以限制出现过于频繁的术语
  • --clean-up-snapshot:运行后清理堆快照
  • --work-dir:设置当前运行的工作目录
  • --heap-parser-dict-fast-store-size:堆快照解析器中从快速存储切换到较慢存储的大小阈值。 默认值为 5,000,000。 如果您收到 FATAL ERROR: invalid table size Allocation failed - JavaScript heap out of memory 错误,请尝试在此处降低阈值
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab diff-leaks

通过比较控制和测试堆快照来查找新的内存泄漏

memlab diff-leaks 

选项:

  • --control-snapshot:设置控制运行的单个(目标)快照
  • --control-work-dir:设置控制运行的工作目录
  • --treatment-snapshot:设置处理运行的单个(目标)快照
  • --treatment-work-dir:设置处理运行的工作目录
  • --engine:设置 JavaScript 引擎(默认为 V8)
  • --leak-filter:为泄漏过滤器指定定义 JS 文件
  • --trace-object-size-above:保留大小(字节)大于阈值的对象将被视为泄漏
  • --ignore-leak-cluster-size-below:忽略聚合保留大小小于阈值(以字节为单位)的内存泄漏
  • --trace-all-objects:转储所有已分配对象的保留者跟踪(忽略泄漏过滤器),可用选项模式:--trace-all-objects=selected-js-objects, --trace-all-objects=default
  • --save-trace-as-unclassified-cluster:将每个保留者跟踪转储为未分类的跟踪集群
  • --ml-clustering:使用机器学习算法对泄漏跟踪进行聚类(默认情况下,跟踪按启发式方法聚类)
  • --ml-linkage-max-dist:设置聚类的联动最大距离值。 该值应介于[0, 1]含。
  • --ml-clustering-max-df:设置基于百分比的最大文档频率,以限制出现过于频繁的术语
  • --max-cluster-sample-size:指定泄漏跟踪聚类算法的最大泄漏跟踪数量作为输入。 大样本量将保留更完整的信息,但可能会有内存溢出崩溃的风险。
  • --trace-contains:设置节点名称或边名称以过滤包含该名称的泄漏跟踪
  • --heap-parser-dict-fast-store-size:堆快照解析器中从快速存储切换到较慢存储的大小阈值。 默认值为 5,000,000。 如果您收到 FATAL ERROR: invalid table size Allocation failed - JavaScript heap out of memory 错误,请尝试在此处降低阈值
  • --work-dir:设置当前运行的工作目录
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab trace

报告特定节点的保留者跟踪,与 --nodeId 一起使用

memlab trace --node-id=<HEAP_OBJECT_ID>

示例

memlab trace --node-id=@3123123
memlab trace --node-id=128127

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --snapshot-dir:设置包含分析下的所有堆快照的目录路径
  • --engine:设置 JavaScript 引擎(默认为 V8)
  • --node-id:设置堆节点 ID
  • --heap-parser-dict-fast-store-size:堆快照解析器中从快速存储切换到较慢存储的大小阈值。 默认值为 5,000,000。 如果您收到 FATAL ERROR: invalid table size Allocation failed - JavaScript heap out of memory 错误,请尝试在此处降低阈值
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze

在堆快照上运行堆分析。

memlab analyze <PLUGIN_NAME> [PLUGIN_OPTIONS]

选项:

  • --analysis-plugin:指定外部堆分析插件文件(必须是以 Analysis.js 后缀结尾的 vanilla JS 文件)
  • --heap-parser-dict-fast-store-size:堆快照解析器中从快速存储切换到较慢存储的大小阈值。 默认值为 5,000,000。 如果您收到 FATAL ERROR: invalid table size Allocation failed - JavaScript heap out of memory 错误,请尝试在此处降低阈值
  • --work-dir:设置当前运行的工作目录
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze unbound-collection

检查无界集合增长(例如,条目数量不断增长的 Map)

memlab analyze unbound-collection 

选项:

  • --snapshot-dir:设置包含分析下的所有堆快照的目录路径
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze collections-with-stale

分析持有过期对象的集合

memlab analyze collections-with-stale 

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --output:指定分析的输出格式(可用选项:“text”、“json”;默认为“text”)
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze detached-DOM

获取分离的 DOM 元素

memlab analyze detached-DOM 

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --output:指定分析的输出格式(可用选项:“text”、“json”;默认为“text”)
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze global-variable

获取堆中的全局变量

memlab analyze global-variable 

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --output:指定分析的输出格式(可用选项:“text”、“json”;默认为“text”)
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze object

获取对象内部的属性

memlab analyze object 

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --node-id:设置堆节点 ID
  • --output:指定分析的输出格式(可用选项:“text”、“json”;默认为“text”)
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze object-fanout

获取堆中具有最多出站引用的对象

memlab analyze object-fanout 

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --output:指定分析的输出格式(可用选项:“text”、“json”;默认为“text”)
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze object-shallow

按键和值获取对象,而不递归到子对象中

memlab analyze object-shallow 

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze shape

列出保留内存最多的形状

memlab analyze shape 

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze object-size

获取堆中最大的对象

memlab analyze object-size 

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --output:指定分析的输出格式(可用选项:“text”、“json”;默认为“text”)
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze unbound-object

检查无界对象增长(一个保留大小不断增长的单个对象)

memlab analyze unbound-object 

选项:

  • --snapshot-dir:设置包含分析下的所有堆快照的目录路径
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze react-hooks

显示内存消耗最多的 React 组件及其 React hooks 的内存细分。 这在使用从在 Dev 模式下运行的 React 应用程序获取的未缩小的堆快照时效果最佳。 但也支持从生产模式下的 React 应用程序获取的缩小堆快照。

memlab analyze react-hooks 

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze unbound-shape

获取具有无界增长的形状(一类具有不断增长的聚合保留大小的对象)

memlab analyze unbound-shape 

选项:

  • --snapshot-dir:设置包含分析下的所有堆快照的目录路径
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze string

在堆中查找重复的字符串实例

memlab analyze string 

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab analyze unmounted-fiber-node

获取未挂载的 React Fiber 节点

memlab analyze unmounted-fiber-node 

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --output:指定分析的输出格式(可用选项:“text”、“json”;默认为“text”)
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab heap

交互式命令,用于浏览单个堆快照

memlab heap --snapshot <HEAP_SNAPSHOT_FILE>

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --engine:设置 JavaScript 引擎(默认为 V8)
  • --heap-parser-dict-fast-store-size:堆快照解析器中从快速存储切换到较慢存储的大小阈值。 默认值为 5,000,000。 如果您收到 FATAL ERROR: invalid table size Allocation failed - JavaScript heap out of memory 错误,请尝试在此处降低阈值
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab view-heap

交互式命令,用于查看单个堆快照

memlab view-heap --snapshot <HEAP_SNAPSHOT_FILE>

选项:

  • --snapshot:设置分析下的堆快照的文件路径
  • --engine:设置 JavaScript 引擎(默认为 V8)
  • --node-id:设置堆节点 ID
  • --ml-clustering:使用机器学习算法对泄漏跟踪进行聚类(默认情况下,跟踪按启发式方法聚类)
  • --work-dir:设置当前运行的工作目录
  • --heap-parser-dict-fast-store-size:堆快照解析器中从快速存储切换到较慢存储的大小阈值。 默认值为 5,000,000。 如果您收到 FATAL ERROR: invalid table size Allocation failed - JavaScript heap out of memory 错误,请尝试在此处降低阈值
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

其他命令

memlab version

显示所有已安装的 memlab 包的版本

memlab version 

选项:

  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab list

列出所有测试场景

memlab list 

选项:

  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab reset

重置并初始化所有目录

memlab reset 

选项:

  • --work-dir:设置当前运行的工作目录
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab measure

在测量模式下运行测试场景

在某些 Web 应用程序中,堆大小在各种运行中可能会显示出相当大的可变性。 这种波动通常使人们难以理解内存泄漏的影响。 引入测量模式旨在通过重复执行相同的场景来解决这一挑战,从而获得 JavaScript 堆大小的多个数据点。 这可以帮助了解特定运行期间的堆大小移动是来自内存相关问题还是仅仅是噪音。

memlab measure --scenario <TEST_SCENARIO_FILE>

示例

memlab measure --scenario /tmp/test-scenario.js
memlab measure --scenario /tmp/test-scenario.js --work-dir /tmp/test-1/

选项:

  • --headful:在有头模式下启动浏览器,默认情况下为无头模式
  • --display-leak-outlines:在有头浏览器中显示泄漏的组件轮廓;与 --headful 选项一起使用
  • --run-num:设置运行次数
  • --app:设置已载入 Web 应用程序的名称
  • --interaction:设置已载入交互的名称
  • --full:为 E2E 交互中的每一步拍摄堆快照
  • --skip-snapshot:跳过拍摄堆快照
  • --skip-screenshot:跳过截图
  • --skip-gc:跳过在浏览器中进行垃圾回收
  • --skip-scroll:跳过在浏览器中滚动目标页面
  • --skip-extra-ops:跳过在目标页面和最终页面上进行额外的交互(例如,滚动和等待)
  • --run-mode:设置运行模式
  • --local-puppeteer:通过本地 puppeteer 启用远程浏览器实例调试
  • --scenario:设置加载测试场景的文件路径
  • --chromium-binary:设置 E2E 运行的 chromium 二进制文件
  • --protocol-timeout:设置 chromium 连接的协议超时时间(以毫秒为单位)。 当前默认值为 180000,当堆快照太大(例如,超过 1GB)并且页面崩溃并显示错误“ProtocolError: HeapProfiler.takeHeapSnapshot timed out”时,您可能需要通过此标志增加超时时间。
  • --device:设置要模拟的设备类型
  • --user-agent:设置浏览器中的 UserAgent 字符串(用于 E2E 交互),否则使用 Chromium 的默认 UserAgent
  • --disable-xvfb:禁用 Xvfb (X virtual framebuffer) 以模拟有头浏览器渲染
  • --disable-web-security:禁用 Chromium 中的 Web 安全性以启用跨域请求;默认情况下启用 Web 安全性
  • --rewrite-js:启用浏览器中检测 JavaScript 代码
  • --log-script:启用在浏览器中拦截和记录 JavaScript 代码
  • --work-dir:设置当前运行的工作目录
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab warmup

预热目标应用程序

memlab warmup --scenario <TEST_SCENARIO_FILE>

示例

memlab warmup --scenario /tmp/test-scenario.js

选项:

  • --headful:在有头模式下启动浏览器,默认情况下为无头模式
  • --display-leak-outlines:在有头浏览器中显示泄漏的组件轮廓;与 --headful 选项一起使用
  • --app:设置已载入 Web 应用程序的名称
  • --interaction:设置已载入交互的名称
  • --run-mode:设置运行模式
  • --local-puppeteer:通过本地 puppeteer 启用远程浏览器实例调试
  • --scenario:设置加载测试场景的文件路径
  • --chromium-binary:设置 E2E 运行的 chromium 二进制文件
  • --protocol-timeout:设置 chromium 连接的协议超时时间(以毫秒为单位)。 当前默认值为 180000,当堆快照太大(例如,超过 1GB)并且页面崩溃并显示错误“ProtocolError: HeapProfiler.takeHeapSnapshot timed out”时,您可能需要通过此标志增加超时时间。
  • --device:设置要模拟的设备类型
  • --user-agent:设置浏览器中的 UserAgent 字符串(用于 E2E 交互),否则使用 Chromium 的默认 UserAgent
  • --disable-xvfb:禁用 Xvfb (X virtual framebuffer) 以模拟有头浏览器渲染
  • --disable-web-security:禁用 Chromium 中的 Web 安全性以启用跨域请求;默认情况下启用 Web 安全性
  • --skip-warmup: 跳过预热 Web 服务器
  • --rewrite-js:启用浏览器中检测 JavaScript 代码
  • --log-script:启用在浏览器中拦截和记录 JavaScript 代码
  • --work-dir:设置当前运行的工作目录
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab help

列出所有 MemLab CLI 命令或打印特定命令的帮助文本

memlab help <COMMAND> [SUB-COMMANDS]

选项:

  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab get-default-work-dir

查询默认工作目录

memlab get-default-work-dir 

选项:

  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab snapshot

与 Web 应用程序交互并拍摄堆快照

memlab snapshot --scenario <TEST_SCENARIO_FILE>

示例

memlab snapshot --scenario /tmp/test-scenario.js
memlab snapshot --scenario /tmp/test-scenario.js --work-dir /tmp/test-1/

选项:

  • --headful:在有头模式下启动浏览器,默认情况下为无头模式
  • --display-leak-outlines:在有头浏览器中显示泄漏的组件轮廓;与 --headful 选项一起使用
  • --app:设置已载入 Web 应用程序的名称
  • --interaction:设置已载入交互的名称
  • --full:为 E2E 交互中的每一步拍摄堆快照
  • --skip-snapshot:跳过拍摄堆快照
  • --skip-screenshot:跳过截图
  • --skip-gc:跳过在浏览器中进行垃圾回收
  • --skip-scroll:跳过在浏览器中滚动目标页面
  • --skip-extra-ops:跳过在目标页面和最终页面上进行额外的交互(例如,滚动和等待)
  • --run-mode:设置运行模式
  • --local-puppeteer:通过本地 puppeteer 启用远程浏览器实例调试
  • --scenario:设置加载测试场景的文件路径
  • --chromium-binary:设置 E2E 运行的 chromium 二进制文件
  • --protocol-timeout:设置 chromium 连接的协议超时时间(以毫秒为单位)。 当前默认值为 180000,当堆快照太大(例如,超过 1GB)并且页面崩溃并显示错误“ProtocolError: HeapProfiler.takeHeapSnapshot timed out”时,您可能需要通过此标志增加超时时间。
  • --device:设置要模拟的设备类型
  • --user-agent:设置浏览器中的 UserAgent 字符串(用于 E2E 交互),否则使用 Chromium 的默认 UserAgent
  • --disable-xvfb:禁用 Xvfb (X virtual framebuffer) 以模拟有头浏览器渲染
  • --disable-web-security:禁用 Chromium 中的 Web 安全性以启用跨域请求;默认情况下启用 Web 安全性
  • --rewrite-js:启用浏览器中检测 JavaScript 代码
  • --log-script:启用在浏览器中拦截和记录 JavaScript 代码
  • --worker:设置需要选择和分析的目标(worker)的标题
  • --work-dir:设置当前运行的工作目录
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出

memlab warmup-and-snapshot

预热服务器并拍摄堆快照

这相当于运行 memlab warmupmemlab snapshot

# specify a test scenario file, memlab will warm up the server and take heap snapshots
memlab warmup-and-snapshot --scenario <TEST_SCENARIO_FILE>

示例

memlab warmup-and-snapshot --scenario /tmp/test-scenario.js
# set the working directory of the current run
memlab warmup-and-snapshot --scenario /tmp/test-scenario.js --work-dir /tmp/test-1/

选项:

  • --work-dir:设置当前运行的工作目录
  • --headful:在有头模式下启动浏览器,默认情况下为无头模式
  • --display-leak-outlines:在有头浏览器中显示泄漏的组件轮廓;与 --headful 选项一起使用
  • --app:设置已载入 Web 应用程序的名称
  • --interaction:设置已载入交互的名称
  • --run-mode:设置运行模式
  • --local-puppeteer:通过本地 puppeteer 启用远程浏览器实例调试
  • --scenario:设置加载测试场景的文件路径
  • --chromium-binary:设置 E2E 运行的 chromium 二进制文件
  • --protocol-timeout:设置 chromium 连接的协议超时时间(以毫秒为单位)。 当前默认值为 180000,当堆快照太大(例如,超过 1GB)并且页面崩溃并显示错误“ProtocolError: HeapProfiler.takeHeapSnapshot timed out”时,您可能需要通过此标志增加超时时间。
  • --device:设置要模拟的设备类型
  • --user-agent:设置浏览器中的 UserAgent 字符串(用于 E2E 交互),否则使用 Chromium 的默认 UserAgent
  • --disable-xvfb:禁用 Xvfb (X virtual framebuffer) 以模拟有头浏览器渲染
  • --disable-web-security:禁用 Chromium 中的 Web 安全性以启用跨域请求;默认情况下启用 Web 安全性
  • --skip-warmup: 跳过预热 Web 服务器
  • --rewrite-js:启用浏览器中检测 JavaScript 代码
  • --log-script:启用在浏览器中拦截和记录 JavaScript 代码
  • --full:为 E2E 交互中的每一步拍摄堆快照
  • --skip-snapshot:跳过拍摄堆快照
  • --skip-screenshot:跳过截图
  • --skip-gc:跳过在浏览器中进行垃圾回收
  • --skip-scroll:跳过在浏览器中滚动目标页面
  • --skip-extra-ops:跳过在目标页面和最终页面上进行额外的交互(例如,滚动和等待)
  • --worker:设置需要选择和分析的目标(worker)的标题
  • --help, -h:打印帮助文本
  • --verbose, -v:显示更多详细信息
  • --sc:设置为连续测试模式
  • --debug:启用手动调试
  • --silent, -s:静音所有终端输出