7

時間の経過とともに速度が低下するノード アプリがあります。https://hacks.mozilla.org/2012/11/tracking-down-memory-leaks-in-node-js-a-node-js-holiday-season/を読むと、メモリリークが発生しているようで、 v8 gc がアプリの速度を低下させています。だから私は node-memwatch を試しましたが、関連する結果は

 { 
   what: 'Native',
   size_bytes: 18853040,
   size: '17.98 mb',
   '+': 2247,
   '-': 116 
 },

しかし、コード ベースで何を検索すればよいかわかりません。ネイティブ v8 関数へのネイティブ リファラーだと思いますが、ここでロックされています。

それで、私たちが実験したことがあるなら、あなたの答えに感謝します.

4

1 に答える 1

2

v8コードのコメントに記載されているように、ネイティブは「ネイティブ オブジェクト (V8 ヒープからではない)」を意味します。

さらなる調査により、次の定義にたどり着きました。

ネイティブ オブジェクトは、JavaScript ヒープにないその他すべてのものです。ネイティブ オブジェクトは、ヒープ オブジェクトとは対照的に、V8 ガベージ コレクターによってその有効期間全体が管理されず、JavaScript ラッパー オブジェクトを使用して JavaScript からのみアクセスできます。

最後のリンクから注目すべき良い点は、文字列を VM ヒープまたはラッパー オブジェクトのいずれかに格納できることが言及されていることです。2 番目の形式では、これらのラッパーは「たとえば、Web から受信したスクリプト ソースやその他のコンテンツが保存されている外部ストレージにアクセスするために」作成されます。

于 2014-08-07T23:26:26.293 に答える