| // Flags: --expose-gc --no-deprecation |
| 'use strict'; |
| |
| const common = require('../common'); |
| if (!common.hasCrypto) |
| common.skip('missing crypto'); |
| |
| const assert = require('assert'); |
| const { createSecureContext } = require('tls'); |
| const { createSecurePair } = require('tls'); |
| |
| const before = process.memoryUsage().external; |
| { |
| const context = createSecureContext(); |
| const options = {}; |
| for (let i = 0; i < 1e4; i += 1) |
| createSecurePair(context, false, false, false, options).destroy(); |
| } |
| setImmediate(() => { |
| global.gc(); |
| const after = process.memoryUsage().external; |
| |
| // It's not an exact science but a SecurePair grows .external by about 45 kB. |
| // Unless AdjustAmountOfExternalAllocatedMemory() is called on destruction, |
| // 10,000 instances make it grow by well over 400 MB. Allow for some slop |
| // because objects like buffers also affect the external limit. |
| assert(after - before < 25 << 20); |
| }); |