Spaces:
Running
Running
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| 0 && (module.exports = { | |
| getAllMemoryUsageSpans: null, | |
| startPeriodicMemoryUsageTracing: null, | |
| stopPeriodicMemoryUsageTracing: null, | |
| traceMemoryUsage: null | |
| }); | |
| function _export(target, all) { | |
| for(var name in all)Object.defineProperty(target, name, { | |
| enumerable: true, | |
| get: all[name] | |
| }); | |
| } | |
| _export(exports, { | |
| getAllMemoryUsageSpans: function() { | |
| return getAllMemoryUsageSpans; | |
| }, | |
| startPeriodicMemoryUsageTracing: function() { | |
| return startPeriodicMemoryUsageTracing; | |
| }, | |
| stopPeriodicMemoryUsageTracing: function() { | |
| return stopPeriodicMemoryUsageTracing; | |
| }, | |
| traceMemoryUsage: function() { | |
| return traceMemoryUsage; | |
| } | |
| }); | |
| const _v8 = /*#__PURE__*/ _interop_require_default(require("v8")); | |
| const _log = require("../../build/output/log"); | |
| const _trace = require("../../trace"); | |
| const _picocolors = require("../picocolors"); | |
| const _path = require("path"); | |
| const _shared = require("../../trace/shared"); | |
| function _interop_require_default(obj) { | |
| return obj && obj.__esModule ? obj : { | |
| default: obj | |
| }; | |
| } | |
| const HEAP_SNAPSHOT_THRESHOLD_PERCENT = 70; | |
| let alreadyGeneratedHeapSnapshot = false; | |
| const TRACE_MEMORY_USAGE_TIMER_MS = 20000; | |
| let traceMemoryUsageTimer; | |
| const allMemoryUsage = []; | |
| function startPeriodicMemoryUsageTracing() { | |
| traceMemoryUsageTimer = setTimeout(()=>{ | |
| traceMemoryUsage('periodic memory snapshot'); | |
| startPeriodicMemoryUsageTracing(); | |
| }, TRACE_MEMORY_USAGE_TIMER_MS); | |
| } | |
| function stopPeriodicMemoryUsageTracing() { | |
| if (traceMemoryUsageTimer) { | |
| clearTimeout(traceMemoryUsageTimer); | |
| } | |
| } | |
| function getAllMemoryUsageSpans() { | |
| return allMemoryUsage; | |
| } | |
| function traceMemoryUsage(description, parentSpan) { | |
| const memoryUsage = process.memoryUsage(); | |
| const v8HeapStatistics = _v8.default.getHeapStatistics(); | |
| const heapUsed = v8HeapStatistics.used_heap_size; | |
| const heapMax = v8HeapStatistics.heap_size_limit; | |
| const tracedMemoryUsage = { | |
| 'memory.rss': memoryUsage.rss, | |
| 'memory.heapUsed': heapUsed, | |
| 'memory.heapTotal': memoryUsage.heapTotal, | |
| 'memory.heapMax': heapMax | |
| }; | |
| allMemoryUsage.push(tracedMemoryUsage); | |
| const tracedMemoryUsageAsStrings = Object.fromEntries(Object.entries(tracedMemoryUsage).map(([key, value])=>[ | |
| key, | |
| String(value) | |
| ])); | |
| if (parentSpan) { | |
| parentSpan.traceChild('memory-usage', tracedMemoryUsageAsStrings); | |
| } else { | |
| (0, _trace.trace)('memory-usage', undefined, tracedMemoryUsageAsStrings); | |
| } | |
| if (process.env.EXPERIMENTAL_DEBUG_MEMORY_USAGE) { | |
| const percentageHeapUsed = 100 * heapUsed / heapMax; | |
| (0, _log.info)(''); | |
| (0, _log.info)('***************************************'); | |
| (0, _log.info)(`Memory usage report at "${description}":`); | |
| (0, _log.info)(` - RSS: ${(memoryUsage.rss / 1024 / 1024).toFixed(2)} MB`); | |
| (0, _log.info)(` - Heap Used: ${(heapUsed / 1024 / 1024).toFixed(2)} MB`); | |
| (0, _log.info)(` - Heap Total Allocated: ${(memoryUsage.heapTotal / 1024 / 1024).toFixed(2)} MB`); | |
| (0, _log.info)(` - Heap Max: ${(heapMax / 1024 / 1024).toFixed(2)} MB`); | |
| (0, _log.info)(` - Percentage Heap Used: ${percentageHeapUsed.toFixed(2)}%`); | |
| (0, _log.info)('***************************************'); | |
| (0, _log.info)(''); | |
| if (percentageHeapUsed > HEAP_SNAPSHOT_THRESHOLD_PERCENT) { | |
| const distDir = _shared.traceGlobals.get('distDir'); | |
| const heapFilename = (0, _path.join)(distDir, `${description.replace(' ', '-')}.heapsnapshot`); | |
| (0, _log.warn)((0, _picocolors.bold)(`Heap usage is close to the limit. ${percentageHeapUsed.toFixed(2)}% of heap has been used.`)); | |
| if (!alreadyGeneratedHeapSnapshot) { | |
| (0, _log.warn)((0, _picocolors.bold)(`Saving heap snapshot to ${heapFilename}. ${(0, _picocolors.italic)('Note: this will take some time.')}`)); | |
| _v8.default.writeHeapSnapshot(heapFilename); | |
| alreadyGeneratedHeapSnapshot = true; | |
| } else { | |
| (0, _log.warn)('Skipping heap snapshot generation since heap snapshot has already been generated.'); | |
| } | |
| } | |
| } | |
| } | |
| //# sourceMappingURL=trace.js.map |