Buffer will not be GC?
To see this problem, I wrote a test code.
var http = require('http') , os = require('os');function create(size, res) { var mb = 1024 * 1024; res.write('free ' + os.freemem() / mb + 'MB\r\n'); res.write('------------- after new ' + size + 'MB buffer\r\n'); var buffer = new Buffer(size * mb); for(var i = 0, len = buffer.length; i
From http: // localhost: 8080/, you can see that after an http request is called
------------- New Buffer 0 free 139.82421875 MB ------------- after new 1 MB bufferfree 138.890625 MB ------------- new Buffer 1 free 138.890625 MB ------------- after new 1 MB bufferfree 138.890625 MB --------------- new Buffer 2 free 138.890625 MB ----------- after new 1 MB bufferfree 138.93359375 MB ------------- new Buffer 3 free 138.93359375 MB ------------- after new 1 MB bufferfree 138.98046875 MB ------------- new Buffer 4 free 138.98046875 MB ------------- after new 1 MB bufferfree 139.0703125 MB ------------- new Buffer 5 free 139.0703125 MB ------------- after new 1 MB bufferfree 139.09375 MB ***** is omitted here ******* ------------- new Buffer 96 free 136.90234375 MB ------------- after new 1 MB bufferfree 136.15234375 MB ------------- new Buffer 97 free 136.1796875 MB ------------- after new 1 MB bufferfree 134.49609375 MB ------------- new Buffer 98 free 134.515625 MB ------------- after new 1 MB bufferfree 133.64453125 MB ------------- new Buffer 99 free 133.64453125 MB ------------- after new 1 MB bufferfree 132.76171875 MB
From the result, the Buffer will be recycled.
Question?
Is Buffer implemented by memory reuse? Or should I release it to the operating system every time I apply for a new request and GC?
Love
^_^ Hope this article will be useful to you