日付のローカライズのために次のコードを実行しています。しかし、それはあまりにも多くのメモリ(約2ギガバイト)を取っている。日付の会話が大量のメモリを使用しています
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)でメモリー制限(ヒープサイズ)を制御しようとしました。
- メモリ上限を制御するためにupstart limitオプション(ハードとソフトの制限を提供)を試していますが、動作しませんでした。
私はノード0.12.8バージョンを使用しています。
助けが必要です。 :)
ループの内容は 'key'や' _array'と何が関係していますか?また、 'for..in'は_Object_の反復処理のためのもので、_Array_を繰り返し処理することがわかっている場合は、通常の[' for'](https://developer.mozilla.org/ja/docs/Web/JavaScript/参照/ステートメント/ for)。 '_ts_string'はグローバルになっているようですね? –
各繰り返しに対して新しいDateオブジェクトを作成する必要がありますか? –
@PaulS。私はここに言及するのを忘れた。すでに定義されています。 –