有很多工具,哪些诊断工具适用于node.js应用程序的诊断内存泄漏问题?
答案 0 :(得分:1)
是的,IDDE不仅是内存泄漏检测的强大工具,而且是针对Node.js错误行为(包括崩溃和挂起)的各种问题确定。
以下是概述,安装和新信息的链接:https://www.ibm.com/developerworks/java/jdk/tools/idde
!nodeoverview {
内存分配器,使用:981 MB,可用:482 MB GC计数:144
显示堆的占用情况。
然后,使用jsmeminfo找出堆中的主要驻留对象。
!jsmeminfo {
内存分配器,使用:981 MB,可用:482 MB 总堆对象:21559924
最大的5个堆对象类型大小(字节)更多信息
0x00000000de06d319 FIXED_ARRAY_TYPE 131112!array 0x00000000de06d319 0x00000000de0ac6d9 FIXED_ARRAY_TYPE 98360!array 0x00000000de0ac6d9 0x00000000e90e2f09 ASCII_STRING_TYPE 48152!string 0x00000000e90e2f09 0x00000000e9035099 ASCII_STRING_TYPE 48088!string 0x00000000e9035099 0x00000000e9004101 ASCII_STRING_TYPE 40936!string 0x00000000e9004101
最频繁的5种对象类型频率
JS_OBJECT_TYPE 15371393 FIXED_ARRAY_TYPE 6175379 ASCII_INTERNALIZED_STRING_TYPE 3476 BYTE_ARRAY_TYPE 1572 JS_FUNCTION_TYPE 1434
}
根据这些信息查看应用程序,看看它们是否有合理的内存占用内存。
如果您想进一步“剖析”对象以查看内容,请使用对象扩展命令,例如!jsobject或!array:
!array 0x00000000de06d319 {
数组类型:FIXED_ARRAY_TYPE Len:16387 仅显示前100个元素 0:0xd9400000000(SMI) 1:0x3fe00000000(SMI) 2:0x400000000000(SMI) 3:0x9a1103d1(ASCII_INTERNALIZED_STRING_TYPE:!print 0x000000009A1103D1) 4:0x9a1042a9(ASCII_INTERNALIZED_STRING_TYPE:!print 0x000000009A1042A9) ... }
如果要根据对象的内部类型将整个堆“隔离”到用户jsgroupobjects中。当您以不同的时间间隔进行多次转储时,这会更有用,并希望比较哪些对象随时间增长。
!jsgroupobjects {
代表性对象地址对象类型Num对象构造函数Num属性属性
!jsobject 0x00000000c8244fd1 JS_OBJECT_TYPE 6133503对象0
!jsobject 0x00000000c8004161 JS_OBJECT_TYPE 6133499数据库0
!jsobject 0x00000000c8004101 JS_OBJECT_TYPE 3066750 MyRecord 0
!jsobject 0x00000000c869b111 JS_OBJECT_TYPE 37302对象0
!jsobject 0x00000000de05b959 JS_FUNCTION_TYPE 542 0
!jsobject 0x00000000de04bcc1 JS_FUNCTION_TYPE 267 0
!jsobject 0x00000000de04aa09 JS_FUNCTION_TYPE 251 0
!jsobject 0x00000000de04a911 JS_FUNCTION_TYPE 227 0
!jsobject 0x00000000de0a48c9 JS_ARRAY_TYPE 190数组0
!jsobject 0x00000000de04a7e9 JS_FUNCTION_TYPE 102 0
!jsobject 0x00000000de04e379 JS_ARRAY_TYPE 34数组0
!jsobject 0x00000000de050db1 JS_OBJECT_TYPE 30对象0
!jsobject 0x00000000c2938151 JS_REGEXP_TYPE 18 RegExp 0
!jsobject 0x00000000c2955a11 JS_OBJECT_TYPE 15 NativeModule 0
!jsobject 0x00000000c2944519 JS_OBJECT_TYPE 11对象0
!jsobject 0x00003abc617bee71 JS_OBJECT_TYPE 102 CallSite 3接收器,有趣,pos
如果要检查单个对象,请在对象地址上执行jsobject。
!jsobject 0x00003abc617bee71 {
对象具有快速属性 描述符数量:3
名称值更多信息
接收器0x0000251abe506c91
有趣的是0x00003abc617bb241
pos 0x00001dfd00000000 SMI = 0x1dfd
}
答案 1 :(得分:0)
模块https://www.npmjs.com/package/appmetrics但它更适用于监控和分析。 你可以看看它,它很有用。