Javascript 为什么`(console.error=console.trace)();`是否在Node.js中使用“堆出内存”?

Javascript 为什么`(console.error=console.trace)();`是否在Node.js中使用“堆出内存”?,javascript,node.js,Javascript,Node.js,我正在使用Node.jsv5.8.0 我想让console.error充当console.trace,所以我使用了console.error=console.trace。但是当我调用控制台.error时,发生了一个致命的内存错误: <--- Last few GCs ---> 29296 ms: Mark-sweep 1328.1 (1403.1) -> 1328.1 (1404.1) MB, 32.8 / 0.0 ms [allocation failure] [GC

我正在使用Node.jsv5.8.0

我想让
console.error
充当
console.trace
,所以我使用了
console.error=console.trace。但是当我调用
控制台.error
时,发生了一个致命的内存错误:

<--- Last few GCs --->

   29296 ms: Mark-sweep 1328.1 (1403.1) -> 1328.1 (1404.1) MB, 32.8 / 0.0 ms [allocation failure] [GC in old space requested].
   29314 ms: Mark-sweep 1328.1 (1404.1) -> 1328.1 (1404.1) MB, 17.8 / 0.0 ms [allocation failure] [GC in old space requested].
   29333 ms: Mark-sweep 1328.1 (1404.1) -> 1338.8 (1403.1) MB, 19.7 / 0.0 ms [last resort gc].
   29353 ms: Mark-sweep 1338.8 (1403.1) -> 1349.7 (1403.1) MB, 19.3 / 0.0 ms [last resort gc].


<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 00000318EFDCFB61 <JS Object>
    1: DoJoin(aka DoJoin) [native array.js:~129] [pc=00000130FFFB1B73] (this=00000318EFD04381 <undefined>,w=000001FBBADF90E1 <JS Array[17]>,x=17,N=00000318EFD043C1 <true>,J=000003D7BECEC771 <String[1]\: \n>,I=00000318EFDB46F1 <JS Function ConvertToString (SharedFunctionInfo 00000318EFD52DC9)>)
    2: Join(aka Join) [native array.js:180] [pc=00000130FFF08772] (this=00000318EFD04381 <undefined>...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

29296毫秒:标记扫描1328.1(1403.1)->1328.1(1404.1)MB,32.8/0.0毫秒[分配失败][请求旧空间中的GC]。
29314毫秒:标记扫描1328.1(1404.1)->1328.1(1404.1)MB,17.8/0.0毫秒[分配失败][请求旧空间中的GC]。
29333毫秒:标记扫描1328.1(1404.1)->1338.8(1403.1)MB,19.7/0.0毫秒[最后的gc]。
29353毫秒:标记扫描1338.8(1403.1)->1349.7(1403.1)MB,19.3/0.0毫秒[最后的gc]。
==JS堆栈跟踪=========================================
安全上下文:00000 318EFDCFB61
1:DoJoin(又称DoJoin)[native array.js:~129][pc=00000130FFFB1B73](this=00000318EFD04381,w=000001FBBADF90E1,x=17,N=00000318EFD043C1,J=000003D7BECEC771,I=00000318EFDB46F1)
2:Join(又名Join)[native array.js:180][pc=00000130FFF08772](this=00000318EFD04381。。。
致命错误:调用和重试上次分配失败-JavaScript堆内存不足

原因是什么?是否
console.trace
在内部调用
console.error

在NodeJS中,
console.error
console.warn
用于打印到标准错误输出。
console.trace
使用
console.error
在内部打印到标准错误输出,作为
console.trace
通常用于表示错误

这里有一个链接,指向
console.trace
调用
console.error
的行:

您可以尝试以下代码:

console.trace = function trace() {
  var err = new Error();
  err.name = 'Trace';
  err.message = util.format.apply(null, arguments);
  Error.captureStackTrace(err, trace);
  this.oldWarn(err.stack);
};

console.oldWarn = console.warn;
console.error = console.warn = console.trace;