2015年の更新
使用中のすべての主要なブラウザーをサポートする必要がある場合、2012年にはこれは不可能でした。残念ながら、現在のところ、これはまだChromeのみの機能です(の非標準の拡張機能window.performance
)。
window.performance.memory
ブラウザーサポート:Chrome 6以降
2012年の回答
Webページまたはjqueryアプリケーションによって使用されているメモリの量を確認する方法はありますか?アプリケーションがユーザーのブラウザーでのメモリ使用量に基づいてアクションを決定できるように、(開発ツールだけでなく)ランタイムソリューションを探しています。
シンプルだが正しい答えはノーです。すべてのブラウザがそのようなデータを公開するわけではありません。そして、「手作り」の複雑さと不正確さから単純にアイデアを捨てるべきだと思いますソリューションそれが解決するよりも多くの問題を引き起こす可能。
DOM要素やドキュメントのサイズを数えるのは良い見積もりですが、イベントバインディング、data()、プラグイン、その他のメモリ内のデータ構造が含まれていないため、かなり不正確になる可能性があります。
本当に自分のアイデアを使いたい場合は、固定コンテンツと動的コンテンツを分離する必要があります。
フィックスコンテンツは、ユーザーアクション(スクリプトファイル、プラグインなどが使用するメモリ)に依存しません。
それ以外はすべて動的と見なされ、制限を決定する際の主な焦点となります。
しかし、それらを要約する簡単な方法はありません。これらすべての情報を収集する追跡システムを実装できます。すべての操作で適切な追跡メソッドを呼び出す必要があります。例えば:
jQuery.data
メソッドをラップまたは上書きして、データ割り当てについて追跡システムに通知します。
コンテンツの追加または削除も追跡されるようにhtml操作をラップします(これinnerHTML.length
が最善の見積もりです)。
大きなメモリ内オブジェクトを保持する場合は、それらも監視する必要があります。
イベントバインディングについては、イベント委任を使用する必要があります。その場合は、ある程度固定された要素と見なすこともできます。
メモリ要件を正確に見積もることが難しいもう1つの側面は、ブラウザによってメモリの割り当てが異なる可能性があることです(JavaScriptオブジェクトとDOM要素の場合)。