这里面两个两个 flag --inspact 是告诉它通过chrome devtool 进行调试,--expose-gc 是说你可以通过global.gc()方法主动收集内存。
执行之后就会有一个chrome://协议的链接,粘贴进chrome,就会出现最常见的chrome dev tool,在profile 里面,点击第二栏 Take Heap Snapshot,然后点击Take Snapshot,记录一次当前heap内存使用情况,此时就会出现当前的内存使用情况的快照,然后等一下,让node程序运行一段时间,再记录一次,然后点击左上角的Summary切换成Comparison模式,通过与第一次的对比,找到究竟是什么增加了,就能找到具体的问题。
두 개의 플래그 --inpact는 chrome devtool을 통해 디버깅하도록 지시하고, --expose-gc는 global.gc() 메서드를 통해 메모리를 적극적으로 수집할 수 있음을 의미합니다. 🎜
🎜실행 후 chrome:// 프로토콜에 대한 링크가 있습니다. 이를 Chrome에 붙여넣으면 프로필에서 두 번째 열 Take Heap을 클릭합니다. Snapshot을 클릭한 후 Take Snapshot을 클릭하면 현재 heap 메모리 사용량을 기록합니다. 이때 현재 메모리 사용량의 스냅샷이 표시됩니다. 그런 다음 노드 프로그램을 잠시 동안 실행한 후 다시 기록합니다. , 그리고 왼쪽 상단 모서리를 클릭하세요. 요약을 비교 모드로 전환하세요. 처음과 비교하면 추가된 내용과 구체적인 내용을 확인할 수 있습니다. 문제. 🎜
🎜두 번째로 node 전역 변수 process의 memoryUsage 메소드를 통해 전후에 heap을 출력할 수 있습니다. 실제 사용량은 코드 전후의 사용량 차이를 비교하여 힙 누수 여부를 판단합니다. 🎜
🎜Express 세션을 녹음할 때의 문제 등 해당 주제의 오류 메시지에 따라 세션이 작성된 위치에 중단점을 더 추가하고 process.memoryUsage() 메서드를 사용하여 어디에서 실행되는지 확인합니다. 문제는 인내심과 행운이 필요하다는 점이다. 🎜
파일을 실행할 때
를 사용하세요.node --inspect --expose-gc XXX.js
node --inspect --expose-gc XXX.js
这里面两个两个 flag --inspact 是告诉它通过chrome devtool 进行调试,--expose-gc 是说你可以通过
global.gc()
方法主动收集内存。执行之后就会有一个
chrome://
协议的链接,粘贴进chrome,就会出现最常见的chrome dev tool,在profile 里面,点击第二栏 Take Heap Snapshot,然后点击Take Snapshot,记录一次当前heap
内存使用情况,此时就会出现当前的内存使用情况的快照,然后等一下,让node程序运行一段时间,再记录一次,然后点击左上角的Summary
切换成Comparison
模式,通过与第一次的对比,找到究竟是什么增加了,就能找到具体的问题。其次,可以在可疑的代码段前后通过
node
全局变量process
的memoryUsage
方法,打印出heap
究竟的使用量,通过对比代码前后使用量的差别,判断是否有
heap
的泄漏。通过题主的报错信息,像是 express session 记录时的问题,在写 session 的地方多打断点,通过
두 개의 플래그 --inpact는 chrome devtool을 통해 디버깅하도록 지시하고, --expose-gc는process.memoryUsage()
global.gc()
메서드를 통해 메모리를 적극적으로 수집할 수 있음을 의미합니다. 🎜 🎜실행 후chrome://
프로토콜에 대한 링크가 있습니다. 이를 Chrome에 붙여넣으면 프로필에서 두 번째 열 Take Heap을 클릭합니다. Snapshot을 클릭한 후 Take Snapshot을 클릭하면 현재heap
메모리 사용량을 기록합니다. 이때 현재 메모리 사용량의 스냅샷이 표시됩니다. 그런 다음 노드 프로그램을 잠시 동안 실행한 후 다시 기록합니다. , 그리고 왼쪽 상단 모서리를 클릭하세요.요약
을비교
모드로 전환하세요. 처음과 비교하면 추가된 내용과 구체적인 내용을 확인할 수 있습니다. 문제. 🎜 🎜두 번째로node
전역 변수process
의memoryUsage
메소드를 통해 전후에heap
을 출력할 수 있습니다.실제 사용량은 코드 전후의 사용량 차이를 비교하여
힙
누수 여부를 판단합니다. 🎜 🎜Express 세션을 녹음할 때의 문제 등 해당 주제의 오류 메시지에 따라 세션이 작성된 위치에 중단점을 더 추가하고process.memoryUsage()
메서드를 사용하여 어디에서 실행되는지 확인합니다. 문제는 인내심과 행운이 필요하다는 점이다. 🎜express-session은 메모리 자체를 직접 사용하기 때문에 누수 문제가 있습니다. 문서에는 이미 mongo 또는 redis와 함께 사용할 수 있다고 명시되어 있습니다.