| "use strict"; |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| Object.defineProperty(exports, "enableMemoryDebuggingMode", { |
| enumerable: true, |
| get: function() { |
| return enableMemoryDebuggingMode; |
| } |
| }); |
| const _v8 = _interop_require_default(require("v8")); |
| const _log = require("../../build/output/log"); |
| const _picocolors = require("../picocolors"); |
| const _gcobserver = require("./gc-observer"); |
| const _trace = require("./trace"); |
| function _interop_require_default(obj) { |
| return obj && obj.__esModule ? obj : { |
| default: obj |
| }; |
| } |
| function enableMemoryDebuggingMode() { |
| |
| |
| |
| if ('setHeapSnapshotNearHeapLimit' in _v8.default) { |
| _v8.default.setHeapSnapshotNearHeapLimit(1); |
| } |
| |
| |
| |
| _v8.default.setFlagsFromString('--detect-ineffective-gcs-near-heap-limit'); |
| |
| |
| process.on('SIGUSR2', ()=>{ |
| (0, _log.warn)(`Received SIGUSR2 signal. Generating heap snapshot. ${(0, _picocolors.italic)('Note: this will take some time.')}`); |
| _v8.default.writeHeapSnapshot(); |
| }); |
| (0, _gcobserver.startObservingGc)(); |
| (0, _trace.startPeriodicMemoryUsageTracing)(); |
| (0, _log.warn)(`Memory debugging mode is enabled. ${(0, _picocolors.italic)('Note: This will affect performance.')}`); |
| (0, _log.info)(' - Heap snapshots will be automatically generated when the process reaches more than 70% of the memory limit and again when the process is just about to run out of memory.'); |
| (0, _log.info)(` - To manually generate a heap snapshot, send the process a SIGUSR2 signal: \`kill -SIGUSR2 ${process.pid}\``); |
| (0, _log.info)(' - Heap snapshots when there is high memory will take a very long time to complete and may be difficult to analyze in tools.'); |
| (0, _log.info)(' - See https://nextjs.org/docs/app/building-your-application/optimizing/memory-usage for more information.'); |
| } |
|
|
| |