Skip to content

Collection of ugly hacks, for JS garbage collector. Use only as a last resort.

License

Notifications You must be signed in to change notification settings

APIs-guru/gc-hacks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gc-hacks

Collection of ugly hacks, for JS garbage collector. Use only as a last resort.

Code based on disscussion from this thread. And I higly recomend to read it before using this module.

Big thanks to @adamhooper for code suggestion and great advice:

And don't use these workarounds normally. Only use them when you have identified a problem and you are certain this fixes the problem, and you have commented why it fixes the problem.

Installation

npm install gc-hacks

Usage

var gcHacks = require('gc-hacks');

var veryLongString = 'xxxxxxxxxxxxxxxxxxxxx...';
var partString = veryLongString.substr(1);

// Now 'veryLongString' stuck in memory until `partString` exist
// or we can do force 'partString' to be copied.
partString = forceStringCopy(partString);

// But what if string inside object or array, like this:
var array = [veryLongString.substr(1)];

// Just use 'recreateObject' it work with any JSON-compatible value
array = recreateValue(array);

// Sometime GC don't free memory for long time.
// But you can force it if you run this function:
gcHacks.gcCollect();
// Note: you need to run node with '--expose-gc' argument.

// You can also wrap any function to do both hacks:
var hackedFunction = gcHacks.recreateReturnObjectAndGcCollect(someFunction);

// Or use it with promises:
somePromise
  .then(gcHacks.recreateReturnObjectAndGcCollect(function (arg1, arg2) {
    return [veryLongString.substr(1)];
  })

About

Collection of ugly hacks, for JS garbage collector. Use only as a last resort.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published