Giter VIP home page Giter VIP logo

heapdump-analyser's Introduction

heapdump-analyser

heapdump-analyser dump.heapsnapshot

Enters interactive mode.

heapdump-analyser dump.heapsnapshot ClassToFind
heapdump-analyser dump.heapsnapshot ClosureToFind()
heapdump-analyser dump.heapsnapshot @IdToFind

Finds all ClassToFind classes or ClosureToFind closures in the heapsnapshot and prints out a colorful retainer trace for them.

heapdump-analyser a.heapsnapshot b.heapsnapshot c.heapsnapshot [ClassToFind|ClosureToFind()|@IdToFind]

Finds only retained objects in c.heapsnapshot that were allocated between a.heapsnapshot and b.heapsnapshot.

Compared to the v8 devtools it

  • correctly analyses WeakMaps and circular dependencies within them.
  • eliminates references between the classes/closures you are looking for.

Note that it may take a large amount of memory for the analysis so you may want to increase the max memory with NODE_OPTIONS=--max_old_space_size=16000. It takes about 16x size of heapsnapshot.

Creating a heapsnapshot

Note that creating a heapsnapshot is pretty slow and blocks execution of your code.

Node.js CLI

Since Node.js 16 you can use --heapsnapshot-near-heap-limit=1 to create a heapsnapshot when the process runs out of memory. Best reduce the available amount of memory via --max_old_space_size=500 to make it run out of memory faster and make the size of the heapsnapshot smaller.

node --max_old_space_size=500 --heapsnapshot-near-heap-limit=1 program.js

It also possible to create a heapsnapshot on a signal via --heapsnapshot-signal=SIGUSR2

node --heapsnapshot-signal=SIGUSR2 program.js

ps aux
kill -USR2 1234

heapdump package

The npm package heapdump allows to create a heapsnapshot from javascript:

console.log("creating heapdump...");
require("heapdump").writeSnapshot((err) => console.log("done", err));

Node.js devtools

Using the devtools is not recommended since the devtools affect the results, are very slow and crash when the heapsnapshot is too large.

heapdump-analyser's People

Contributors

sokra avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.