| 'use strict'; |
| const common = require('../common'); |
| const { Console } = require('console'); |
| const { Writable } = require('stream'); |
| const async_hooks = require('async_hooks'); |
| |
| // Make sure that repeated calls to console.log(), and by extension |
| // stream.write() for the underlying stream, allocate exactly 1 tick object. |
| // At the time of writing, that is enough to ensure a flat memory profile |
| // from repeated console.log() calls, rather than having callbacks pile up |
| // over time, assuming that data can be written synchronously. |
| // Refs: https://github.com/nodejs/node/issues/18013 |
| // Refs: https://github.com/nodejs/node/issues/18367 |
| |
| const checkTickCreated = common.mustCall(); |
| |
| async_hooks.createHook({ |
| init(id, type, triggerId, resource) { |
| if (type === 'TickObject') checkTickCreated(); |
| } |
| }).enable(); |
| |
| const console = new Console(new Writable({ |
| write: common.mustCall((chunk, encoding, cb) => { |
| cb(); |
| }, 100) |
| })); |
| |
| for (let i = 0; i < 100; i++) |
| console.log(i); |