All Projects → oslabs-beta → Aether

oslabs-beta / Aether

All-in-One Memory Leak Testing Solution

Programming Languages

javascript
184084 projects - #8 most used programming language

aether

aether is a memory leak management tool for visualizing and tracking memory usage in real-time.

The best way to evaluate your memory footprint is to look at heap usage. There's a distinct lack of tools for debugging and profiling memory usage in Node.JS/Javascript applications, so there's still a need for a tool to synthesize data with live updates in a chart format.

After installing the aether_memory npm package to your server, you can observe memory usage and notice if you have a memory leak in your application, by just looking at the graph report. Once you've identified a leak, you can look at the two bubble charts to see self and retained size of nodes.

Features

  • Presenting total memory usage over time in a chart format with live updates every 5 seconds, so you can analyze the overall health of your application's memory.

  • Visualizing the self size and retained size of arrays, strings, functions, and objects in your memory heap as a bubble chart to quickly see what is allocated the largest amount of memory.

How it works

aether_memory uses node-heapdump to take snapshots of the heap with 5 seconds intervals. The V8 Engine triggers garbage collection before each snapshot. The physical file is created in 'snapshot' folder and parsed through. Afterwards, the data is analyzed, displayed, and the file gets deleted before the next snapshot is taken, minimizing its own memory footprint and avoiding false results.


Installation

  • Install directly in your application:
npm install aether_memory


Usage

  • Add this script to your package.json specifying how to start your server:
"aether": "node node_modules/aether_memory/server/server.js & <START YOUR SERVER>",
FOR EXAMPLE: 

"aether": "node node_modules/aether_memory/server/server.js & node server/server.js",
  • In your server file require and invoke aether by adding these 2 lines:
const aether = require('aether_memory');
aether.start();
  • In your terminal run:
npm run aether

Technologies


Contributing and Issues

We are always looking to improve. For major changes, please open an issue first to discuss what you would like to change, pull requests are welcome.

Currently on our to-do list:

  • Updates to the retained-size algorithm to account for multiple nodes being attached to a single node
  • Fix a bug where React Router does not deep-link to a chart
  • Expand data on hover for each displayed node in bubble charts

Authors


License

This project is licensed under the MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].