メモリが重い5000個の単純なJSONオブジェクト(各オブジェクトはid
とname
)の配列を格納することをお勧めしますか?私はそれらを使用した後にそれらを削除する必要があります、メモリ内のいくつかのスペースをクリアするには?5000個のJSONオブジェクトのメモリが重いですか?
答えて
はそのJSON文字列を想定したり、ブラウザに格納されていること - のlocalStorage /のsessionStorageを(使用してJSON.stringify)ここでは、文字列サイズ
var items = [];
for (i = 1000000; i < 1005000; i++) {
items.push({
id: i,
name: "Sooooooooooooome Biiiiiiiggggggggg naaaaaaaaaame_" + i
});
}
var json = JSON.stringify(items);
var jsonSize = byteCount(json);
console.log("Size:", jsonSize, "KB");
function byteCount(s) {
return (encodeURI(s).split(/%..|./).length - 1)/1024;
}
これは400KBを超えないものとします。あなたは本当に進む方法を決定する必要があります。これは、デバイス、インターネット速度、データの使用頻度などの多くの要素に依存します。
オブジェクトのサイズを計算し、自分自身がシステム内に重いかどうかを判断する関数を使用できます。あなたが繰り返しオブジェクトを持ってしようとしている場合は、たとえばjavascript flyweight patternに見てみることができます。
var obj = {
name: "john",
surname: "doe"
};
function memorySizeOf(obj) {
var bytes = 0;
function sizeOf(obj) {
if(obj !== null && obj !== undefined) {
switch(typeof obj) {
case 'number':
bytes += 8;
break;
case 'string':
bytes += obj.length * 2;
break;
case 'boolean':
bytes += 4;
break;
case 'object':
var objClass = Object.prototype.toString.call(obj).slice(8, -1);
if(objClass === 'Object' || objClass === 'Array') {
for(var key in obj) {
if(!obj.hasOwnProperty(key)) continue;
sizeOf(obj[key]);
}
} else bytes += obj.toString().length * 2;
break;
}
}
return bytes;
};
function formatByteSize(bytes) {
if(bytes < 1024) return bytes + " bytes";
else if(bytes < 1048576) return(bytes/1024).toFixed(3) + " KiB";
else if(bytes < 1073741824) return(bytes/1048576).toFixed(3) + " MiB";
else return(bytes/1073741824).toFixed(3) + " GiB";
};
return formatByteSize(sizeOf(obj));
};
console.log(memorySizeOf(obj));
そこには迷惑な再帰呼び出しがあり、その結果はサイズに追加することを意図しています。 –
再帰呼び出しは、オブジェクトに別のオブジェクトまたはオブジェクトの配列が含まれている場合です。 –
はい、ただしその結果は使用しません。呼び出し元のサイズに追加する必要があります。 –
- 1. スピードアップAJAXの5000個の以上のオブジェクト
- 2. C#で非同期で5000個のメッセージを送信
- 3. 値のシーケンスはJSONオブジェクトで重要ですか?
- 4. Doctrineフェッチオブジェクトにより、約4000個のオブジェクトでメモリが枯渇します。
- 5. 2個のオブジェクトの重力移動を計算する
- 6. 5000行でSQL結合が遅い
- 7. JSONオブジェクト内のJSONオブジェクト内のJSON ARRAY値が見つからない - ANDROID
- 8. 重いAJAXアプリでFirefox固有のメモリが増加する
- 9. のThread.sleep(5000)
- 10. jmeter - リクエストの記録方法には5000個のアイテムが含まれています
- 11. 複数のjsonと1つのjsonオブジェクトを重複キーで結合する
- 12. Cでファイル内の重複JSONオブジェクトを削除します
- 13. リクエストごとに300,000個のJsonオブジェクトを解析します。
- 14. JSONのエンコーディングは重要ですか?
- 15. Json Arrayから個々のオブジェクトを取得するためのMule式
- 16. C++ではどのメモリ領域がconstオブジェクトですか?
- 17. メモリ重い楕円の勾配
- 18. オブジェクト(JSONから)がnullですか?
- 19. JSONフレームワークのクラスが重複していますか?
- 20. JSONオブジェクトのメモリ割り当てと変数の比較
- 21. JSONオブジェクトとJSONドキュメントの違いは何ですか?
- 22. 値の重さに基づいてJSONオブジェクトから重複値を削除します
- 23. オブジェクトのメモリ計算が不正確ですか?
- 24. なぜHHVM(zend-compatモード)がオブジェクトのメモリを解放しないのですか?
- 25. Javaオブジェクトが参照するオブジェクトを含むメモリが占有しているメモリをプログラムで計算する
- 26. x個のオブジェクトのx個をjavascriptで配列から出力する
- 27. フィルタのJSONオブジェクトが
- 28. Pythonでの重いオブジェクトの初期化
- 29. 重要なセクションがVista/Win2008でメモリをリークしていますか?
- 30. $ .jsonオブジェクトでの.JSON関数
5000個のオブジェクトのJSONを取り出し、お気に入りのエディタに貼り付けて保存し、結果のファイルサイズを確認します。 – Marty
これには「すべてに合ったもの」を提供するのはおそらく妥当ではありませんが、このようなツールはhttps://developers.google.com/web/tools/chrome-devtools/profile/memory-problems/memoryに役立ちます-diagnosis?hl = en –
も、使用しているデバイスによって異なります。ブラウザ/ mob? – naveen