我正在執行以下日期本地化代碼。但它佔用的內存太多(約2 GB)。日誌會話佔用太多內存
var options = {
year: 'numeric', month: 'short', day: 'numeric',
hour: 'numeric', minute : 'numeric',
second: 'numeric' ,timeZone : 'Asia/Calcutta',
timeZoneName: 'short',hour12 : false};
var _ts;
// length approx 80k
var _array = [1486901778700, 1486901778700, ....., 1386901778700.0 ]
var final_string = ''
for(var key in _array) {
//======>>this conversation taking too much memory (around ~2gb) <<======
_ts_string = new Date(_debug_data.timestamp).toLocaleString('en-US', options)
final_string += _ts_string
}
所以問題就在這裏: -
- 爲何需要太多的內存?
- 這個日期對話或任何優化方式的任何替代?
- 如果它佔用太多內存,那麼爲什麼在代碼執行後不釋放內存? (即使我手動調用「gc()」仍然沒有釋放內存。)
- 我試圖通過命令行(--max-old-space)控制內存限制(堆大小),但它失敗。
- 我嘗試使用新貴限制選項(提供硬限制和軟限制)來控制內存限制,但不起作用。
我正在使用節點0.12.8版本。
任何幫助是可觀的。 :)
你的循環的內容與'key'或'_array'有什麼關係?另外,'for..in'用於_Object_迭代,如果你知道你想迭代_Array_使用一個普通的['for'](https://developer.mozilla.org/en/docs/Web/JavaScript/參考/語句/對)。 '_ts_string'看起來正在成爲一個全球性的? –
是否需要爲每個迭代創建新的Date對象? –
@PaulS。我忘了在這裏提到。它已經被定義。 –