什么诊断工具可用于Node.js应用程序?
那里有很多工具,哪些诊断工具对于node.js应用程序的诊断性内存泄漏问题是很好的?
是的,IDDE是一个强大的工具,不仅用于内存泄漏检测,还用于各种问题确定Node.js的不正当行为,包括崩溃和挂起。
以下是概述,安装和什么是新信息的链接: https : //www.ibm.com/developerworks/java/jdk/tools/idde
- 我会从nodeoverview命令开始。 请注意,每个命令都以爆炸(!)开头,每个命令都是由控制(Ctrl + Enter)input的。
!nodeoverview {
堆和垃圾收集
内存分配器,使用:981 MB,可用:482 MB GC计数:144
这显示了堆的占用情况。
-
然后,使用jsmeminfo来找出堆中主要的居民对象。
!jsmeminfo {
内存分配器,使用:981 MB,可用:482 MB堆对象总数:21559924
最大的5个堆对象types大小(字节)更多信息
0x00000000de06d319 FIXED_ARRAY_TYPE 131112!arrays0x00000000de06d319 0x00000000de0ac6d9 FIXED_ARRAY_TYPE 98360!arrays0x00000000de0ac6d9 0x00000000e90e2f09 ASCII_STRING_TYPE 48152!string0x00000000e90e2f09 0x00000000e9035099 ASCII_STRING_TYPE 48088!string0x00000000e9035099 0x00000000e9004101 ASCII_STRING_TYPE 40936!string0x00000000e9004101
最常见的5种对象types频率
JS_OBJECT_TYPE 15371393 FIXED_ARRAY_TYPE 6175379 ASCII_INTERNALIZED_STRING_TYPE 3476 BYTE_ARRAY_TYPE 1572 JS_FUNCTION_TYPE 1434
}
-
根据这些信息查看应用程序,看看他们是否保持内存是正确的。
-
如果要进一步“剖析”对象以查看内容,请使用!jsobject或!array等对象扩展命令:
!数组0x00000000de06d319 {
(SMI)1:0x3fe00000000(SMI)2:0x400000000000(SMI)3:0x9a1103d1(ASCII_INTERNALIZED_STRING_TYPE:!打印0x000000009A1103D1)4:0x9a1042a9(ASCII_INTERNALIZED_STRING_TYPE:!打印0x000000009A1042A9)数组types:FIXED_ARRAY_TYPE长度:16387仅显示前100个元素0:0xd9400000000 …}
-
如果你想根据对象的内部types将整个堆“分离”成部分,请使用jsgroupobjects。 当您以不同的时间间隔进行多个转储并且想要比较哪些对象随着时间而增长时,这会更加有用。
!jsgroupobjects {
代表对象地址对象types编号对象构造器编号属性属性
!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 receiver,fun,pos -
如果要检查单个对象,请在对象地址上执行jsobject。
!jsobject 0x00003abc617bee71 {
对象具有快速属性描述符数量:3
名称价值更多信息
接收器0x0000251abe506c91
乐趣0x00003abc617bb241 pos 0x00001dfd00000000 SMI = 0x1dfd}
模块https://www.npmjs.com/package/appmetrics但它更多用于监视和分析。 你可以检查一下,这很有用。