diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/tests/heapstats.js | 36 | ||||
-rw-r--r-- | cli/tests/heapstats.js.out | 2 | ||||
-rw-r--r-- | cli/tests/integration_tests.rs | 5 |
3 files changed, 43 insertions, 0 deletions
diff --git a/cli/tests/heapstats.js b/cli/tests/heapstats.js new file mode 100644 index 000000000..0ed623e56 --- /dev/null +++ b/cli/tests/heapstats.js @@ -0,0 +1,36 @@ +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +"use strict"; + +function allocTest(alloc, allocAssert, deallocAssert) { + // Helper func that GCs then returns heapStats + const sample = () => { + // deno-lint-ignore no-undef + gc(); + return Deno.core.heapStats(); + }; + const delta = (t1, t2) => t2.usedHeapSize - t1.usedHeapSize; + + // Sample "clean" heapStats + const t1 = sample(); + + // Alloc + let x = alloc(); + const t2 = sample(); + allocAssert(delta(t1, t2)); + + // Free + x = null; + const t3 = sample(); + deallocAssert(delta(t2, t3)); +} + +function main() { + // Large-array test, 1M slot array consumes ~4MB (4B per slot) + allocTest( + () => new Array(1e6), + (delta) => console.log("Allocated:", Math.round(delta / 1e6) + "MB"), + (delta) => console.log("Freed:", Math.round(delta / 1e6) + "MB"), + ); +} + +main(); diff --git a/cli/tests/heapstats.js.out b/cli/tests/heapstats.js.out new file mode 100644 index 000000000..b75a755f8 --- /dev/null +++ b/cli/tests/heapstats.js.out @@ -0,0 +1,2 @@ +Allocated: 4MB +Freed: -4MB diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index e7fc7797b..96223c438 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -3217,6 +3217,11 @@ console.log("finish"); output: "exit_error42.ts.out", }); + itest!(heapstats { + args: "run --quiet --v8-flags=--expose-gc heapstats.js", + output: "heapstats.js.out", + }); + itest!(https_import { args: "run --quiet --reload --cert tls/RootCA.pem https_import.ts", output: "https_import.ts.out", |