33 lines
708 B
JavaScript
33 lines
708 B
JavaScript
|
import { createRequire } from 'module'
|
||
|
|
||
|
import { displayMemoryUsageFromNode } from './util.mjs'
|
||
|
|
||
|
const initialMemoryUsage = process.memoryUsage()
|
||
|
|
||
|
const require = createRequire(import.meta.url)
|
||
|
|
||
|
const { MemoryHolder } = require(`./index.node`)
|
||
|
|
||
|
const sleep = () =>
|
||
|
new Promise((resolve) => {
|
||
|
setTimeout(() => {
|
||
|
resolve()
|
||
|
}, 1000)
|
||
|
})
|
||
|
|
||
|
let i = 1
|
||
|
// eslint-disable-next-line no-constant-condition
|
||
|
while (true) {
|
||
|
const holder = new MemoryHolder(1024 * 1024)
|
||
|
for (const _ of Array.from({ length: 100 })) {
|
||
|
const child = holder.createReference()
|
||
|
child.count()
|
||
|
}
|
||
|
if (i % 100 === 0) {
|
||
|
displayMemoryUsageFromNode(initialMemoryUsage)
|
||
|
await sleep()
|
||
|
global.gc()
|
||
|
}
|
||
|
i++
|
||
|
}
|