これがどのようにbase64エンコーディングでバッファを使用しているのかわかりません。しかし、これは私がバッファ作業を翻訳する方法です。 新しいバッファを作成すると、heapTotalとheapUsedが増加しました。これは使用されているブロックの数にはなりません。バッファを削除すると、ヒープのサイズは小さくなりますが、バッファで使用されたブロックの数に比例しません。あなたがそれを消費した後で、imageBase64Data = nullを試して設定することをお勧めします。ノードの内部GCは、次のスイープでそれらのブロックを解放します。
また、リクエストコールバックハンドラの無名関数内で変数が宣言されるため、メモリ内に新しいimageBase64Data imageDataが作成されます。要求の外に宣言してその中で参照すると、新しいデータが値を上書きする可能性があります。しかし、関数内の値を変更する際には注意が必要です。処理されたURLを参照して管理したい場合は、同じURLを何度も何度も処理しないように、メモやキャッシュに目を通すことをおすすめします。
ここでは、バッファをnullに設定したときのGCの動作を示す簡単なテストを示します。
→ node
> process.memoryUsage()
{ rss: 21639168, heapTotal: 10522624, heapUsed: 5058760 }
> mybuf = require('buffer').Buffer
{ [Function: Buffer]
poolSize: 8192,
from: [Function],
alloc: [Function],
allocUnsafe: [Function],
allocUnsafeSlow: [Function],
isBuffer: [Function: isBuffer],
compare: [Function: compare],
isEncoding: [Function],
concat: [Function],
byteLength: [Function: byteLength] }
> var buf = new mybuf(56789)
undefined
> process.memoryUsage()
{ rss: 24563712, heapTotal: 11571200, heapUsed: 6459632 }
> buf = null
null
> process.memoryUsage()
{ rss: 24756224, heapTotal: 11571200, heapUsed: 6591688 }
> process.memoryUsage()
{ rss: 24805376, heapTotal: 11571200, heapUsed: 6637832 }
> process.memoryUsage()
{ rss: 23359488, heapTotal: 8425472, heapUsed: 5567208 }
>
注Nodejs 6.10.2
new Buffer(body)
を使用してバッファを作成することは推奨されていませんと述べています。