1// Flags: --expose-gc --noconcurrent_recompilation 2'use strict'; 3 4const common = require('../common'); 5if (!common.hasCrypto) 6 common.skip('missing crypto'); 7if (process.config.variables.asan) 8 common.skip('ASAN messes with memory measurements'); 9 10const assert = require('assert'); 11const crypto = require('crypto'); 12 13const before = process.memoryUsage.rss(); 14{ 15 const size = common.hasFipsCrypto || common.hasOpenSSL3 ? 1024 : 256; 16 const dh = crypto.createDiffieHellman(size); 17 const publicKey = dh.generateKeys(); 18 const privateKey = dh.getPrivateKey(); 19 for (let i = 0; i < 5e4; i += 1) { 20 dh.setPublicKey(publicKey); 21 dh.setPrivateKey(privateKey); 22 } 23} 24global.gc(); 25const after = process.memoryUsage.rss(); 26 27// RSS should stay the same, ceteris paribus, but allow for 28// some slop because V8 mallocs memory during execution. 29assert(after - before < 10 << 20, `before=${before} after=${after}`); 30