javascript - 노드 메모리 오버플로 문제
我想大声告诉你
我想大声告诉你 2017-05-16 13:29:53
0
2
822
으아악
我想大声告诉你
我想大声告诉你

모든 응답(2)
阿神

파일을 실행할 때

를 사용하세요.

node --inspect --expose-gc XXX.jsnode --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 全局变量 processmemoryUsage 方法,打印出 heap
究竟的使用量,通过对比代码前后使用量的差别,判断是否有 heap 的泄漏。

通过题主的报错信息,像是 express session 记录时的问题,在写 session 的地方多打断点,通过 process.memoryUsage()

두 개의 플래그 --inpact는 chrome devtool을 통해 디버깅하도록 지시하고, --expose-gc는 global.gc() 메서드를 통해 메모리를 적극적으로 수집할 수 있음을 의미합니다. 🎜 🎜실행 후 chrome:// 프로토콜에 대한 링크가 있습니다. 이를 Chrome에 붙여넣으면 프로필에서 두 번째 열 Take Heap을 클릭합니다. Snapshot을 클릭한 후 Take Snapshot을 클릭하면 현재 heap 메모리 사용량을 기록합니다. 이때 현재 메모리 사용량의 스냅샷이 표시됩니다. 그런 다음 노드 프로그램을 잠시 동안 실행한 후 다시 기록합니다. , 그리고 왼쪽 상단 모서리를 클릭하세요. 요약비교 모드로 전환하세요. 처음과 비교하면 추가된 내용과 구체적인 내용을 확인할 수 있습니다. 문제. 🎜 🎜두 번째로 node 전역 변수 processmemoryUsage 메소드를 통해 전후에 heap을 출력할 수 있습니다.
실제 사용량은 코드 전후의 사용량 차이를 비교하여 누수 여부를 판단합니다. 🎜 🎜Express 세션을 녹음할 때의 문제 등 해당 주제의 오류 메시지에 따라 세션이 작성된 위치에 중단점을 더 추가하고 process.memoryUsage() 메서드를 사용하여 어디에서 실행되는지 확인합니다. 문제는 인내심과 행운이 필요하다는 점이다. 🎜
为情所困

express-session은 메모리 자체를 직접 사용하기 때문에 누수 문제가 있습니다. 문서에는 이미 mongo 또는 redis와 함께 사용할 수 있다고 명시되어 있습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿