Node.js应用程序可使用哪些诊断工具?

Node.js应用程序可使用哪些诊断工具?,node.js,memory-leaks,diagnostics,Node.js,Memory Leaks,Diagnostics,有很多工具,哪些诊断工具适合于诊断node.js应用程序的内存泄漏问题?是的,IDDE不仅是一个功能强大的工具,用于内存泄漏检测,而且还可用于确定node.js错误行为(包括崩溃和挂起)的各种问题 以下是概述、安装和最新信息的链接: 我将从nodeoverview命令开始。请注意,由于某些原因,每个命令都以bang(!)开头,并且每个命令都以控件(ctrl+enter)输入 !!节点概览{ 堆和垃圾收集 内存分配器,已用:981 MB,可用:482 MB GC计数:144 这将显示堆的占用情况

有很多工具,哪些诊断工具适合于诊断node.js应用程序的内存泄漏问题?

是的,IDDE不仅是一个功能强大的工具,用于内存泄漏检测,而且还可用于确定node.js错误行为(包括崩溃和挂起)的各种问题

以下是概述、安装和最新信息的链接:

  • 我将从nodeoverview命令开始。请注意,由于某些原因,每个命令都以bang(!)开头,并且每个命令都以控件(ctrl+enter)输入
  • !!节点概览{

    堆和垃圾收集 内存分配器,已用:981 MB,可用:482 MB GC计数:144

    这将显示堆的占用情况

  • 然后,使用jsmeminfo找出堆中的主要驻留对象

    !jsmeminfo{

    内存分配器,已用:981 MB,可用:482 MB 堆对象总数:21559924

    最大5个堆对象类型大小(字节)详细信息


    0x00000000de06d319固定数组类型131112!数组0x00000000de06d319 0x00000000de0ac6d9固定数组类型98360!数组0x00000000de0ac6d9 0x00000000e90e2f09 ASCII_字符串_类型48152!字符串0x00000000e90e2f09 0x00000000e9035099 ASCII_字符串_类型48088!字符串0x00000000e9035099 0x00000000e9004101 ASCII_字符串_类型40936!字符串0x00000000e9004101

    最常见的5种对象类型频率


    JS_对象_类型15371393 固定数组类型6175379 ASCII\u内部化\u字符串\u类型3476 字节\数组\类型1572 JS_功能_类型1434

    }

  • 根据此信息查看应用程序,并查看它们是否按所示占用内存

  • 如果要进一步“剖析”对象以查看内容,请使用对象扩展命令,如!jsobject或!array:

    !数组0x00000000de06d319{

    数组类型:固定数组类型 Len:16387 仅显示前100个元素 0:0xd9400000000(SMI) 1:0x3fe00000000(SMI) 2:0x400000000000(SMI) 3:0x9a1103d1(ASCII内部化字符串类型:!打印0x000000009A1103D1) 4:0x9a1042a9(ASCII内部化字符串类型:!打印0x000000009A1042A9) ... }

  • 如果要根据对象的内部类型将整个堆“隔离”为多个部分,请使用jsgroupobjects。当您在不同的时间间隔进行多个转储,并希望比较哪些对象随时间增长时,这将更有用

    !jsgroupobjects{

    代表对象地址对象类型Num对象构造函数Num属性属性


    !jsobject 0x00000000c8244fd1 JS_OBJECT_类型6133503 OBJECT 0
    !jsobject 0x00000000c8004161 JS_对象类型6133499数据库0
    !jsobject 0x00000000c8004101 JS_对象类型3066750 MyRecord 0
    !jsobject 0x00000000c869b111 JS_对象类型37302对象0
    !jsobject 0x00000000de05b959 JS_函数类型542 0
    !jsobject 0x00000000de04bcc1 JS_函数类型267 0
    !jsobject 0x00000000de04aa09 JS_函数类型251 0
    !jsobject 0x00000000de04a911 JS_函数类型227 0
    !jsobject 0x00000000de0a48c9 JS_数组类型190数组0
    !jsobject 0x00000000de04a7e9 JS_函数类型102 0
    !jsobject 0x00000000de04e379 JS_数组类型34数组0
    !jsobject 0x00000000de050db1 JS_OBJECT_TYPE 30 OBJECT 0
    !jsobject 0x00000000c2938151 JS_REGEXP_TYPE 18 REGEXP 0
    !jsobject 0x00000000c2955a11 JS_对象类型15 NativeModule 0
    !jsobject 0x00000000c2944519 JS_OBJECT_TYPE 11 OBJECT 0
    !jsobject 0x00003abc617bee71 JS_OBJECT_类型102呼叫站点3接收器,娱乐,pos

  • 如果要检查单个对象,请在对象地址上执行jsobject

    !jsobject 0x00003abc617bee71{

    对象具有快速属性 描述符数量:3

    名称值更多信息


    接收器0x0000251abe506c91
    乐趣0x00003ABC 617BB241 位置0x00001DF00000000 SMI=0x1dfd

    }

  • 模块,但它更多用于监视和分析。
    您可以查看它,它很有用。

    我正在使用的一个工具是IBM交互式诊断数据资源管理器工具(IDDE)。基本上,如果我怀疑应用程序随着时间的推移会出现一些漏洞。我会对node.js进程的核心转储进行不同的快照,然后使用IDDE命令行工具分析核心转储。它们还有eclipse基本GUI版本。哪些命令有用?我发现这个命令jsmeminfo非常有用。jsmeminfo将5个较大的堆对象是如何工作的谢谢,这是信息性的,那么这个工具对node 0.12.x版本和0.10.x版本有效吗>是的,两个node.js版本都受支持,但目前你需要使用node.js的IBM SDK才能工作,Mac/OS不受支持。所以Mac不受支持,它支持什么平台?基本上是所有的g else,x86平台-x Linux,windows,Linux on Systemz,Linux on power。