Skip to content

Instantly share code, notes, and snippets.

@TooTallNate
Forked from nicokaiser/obj-gc-test-fail.js
Created April 14, 2012 03:41
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TooTallNate/2381906 to your computer and use it in GitHub Desktop.
Save TooTallNate/2381906 to your computer and use it in GitHub Desktop.
// run with "node --expose_gc"
var weak = require('weak')
, util = require('util')
var count = 0
, countGc = 0
function dec () {
count--
}
function decGC () {
countGc--
}
function test () {
function MyObject () {
var self = this;
Object.defineProperty(this, 'color', {
get: function() { return 'red' }
})
setTimeout(function () {
self.emit('close')
}, 2000)
}
util.inherits(MyObject, process.EventEmitter)
for (var i = 0; i < 1000; i++) {
var o = new MyObject()
count++
o.on('close', dec)
countGc++
weak(o, decGC)
}
}
test()
setInterval(function () {
gc()
console.log('objects: %d, garbage collected: %d', count, countGc)
}, 1000)
objects: 1000, garbage collected: 1000
objects: 1000, garbage collected: 1000
objects: 0, garbage collected: 12
objects: 0, garbage collected: 12
objects: 0, garbage collected: 12
objects: 0, garbage collected: 12
objects: 0, garbage collected: 12
objects: 0, garbage collected: 12
objects: 0, garbage collected: 12
objects: 0, garbage collected: 12
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment