1'use strict'; 2require('../common'); 3const assert = require('assert'); 4const v8 = require('v8'); 5 6const s = v8.getHeapStatistics(); 7const keys = [ 8 'does_zap_garbage', 9 'external_memory', 10 'heap_size_limit', 11 'malloced_memory', 12 'number_of_detached_contexts', 13 'number_of_native_contexts', 14 'peak_malloced_memory', 15 'total_available_size', 16 'total_global_handles_size', 17 'total_heap_size', 18 'total_heap_size_executable', 19 'total_physical_size', 20 'used_global_handles_size', 21 'used_heap_size']; 22assert.deepStrictEqual(Object.keys(s).sort(), keys); 23keys.forEach(function(key) { 24 assert.strictEqual(typeof s[key], 'number'); 25}); 26 27 28const heapCodeStatistics = v8.getHeapCodeStatistics(); 29const heapCodeStatisticsKeys = [ 30 'bytecode_and_metadata_size', 31 'code_and_metadata_size', 32 'cpu_profiler_metadata_size', 33 'external_script_source_size']; 34assert.deepStrictEqual(Object.keys(heapCodeStatistics).sort(), 35 heapCodeStatisticsKeys); 36heapCodeStatisticsKeys.forEach(function(key) { 37 assert.strictEqual(typeof heapCodeStatistics[key], 'number'); 38}); 39 40 41const expectedHeapSpaces = [ 42 'code_large_object_space', 43 'code_space', 44 'large_object_space', 45 'map_space', 46 'new_large_object_space', 47 'new_space', 48 'old_space', 49 'read_only_space', 50]; 51const heapSpaceStatistics = v8.getHeapSpaceStatistics(); 52const actualHeapSpaceNames = heapSpaceStatistics.map((s) => s.space_name); 53assert.deepStrictEqual(actualHeapSpaceNames.sort(), expectedHeapSpaces.sort()); 54heapSpaceStatistics.forEach((heapSpace) => { 55 assert.strictEqual(typeof heapSpace.space_name, 'string'); 56 assert.strictEqual(typeof heapSpace.space_size, 'number'); 57 assert.strictEqual(typeof heapSpace.space_used_size, 'number'); 58 assert.strictEqual(typeof heapSpace.space_available_size, 'number'); 59 assert.strictEqual(typeof heapSpace.physical_space_size, 'number'); 60}); 61