質問: Monacaで空のプロジェクトを作成し、下記のjavascriptを実行しました。 ``` setItv(); function setItv() { setInterval(function(){ }, 5000); } ``` これをメモリ監視すると、5秒ごとに階段状にいつまでもメモリが積もっていきました。 MonacaでのsetIntervalの仕様なのでしょうか? それともsetIntervalはこのようなものなのでしょうか。 【追記】 確認環境は Android 4.4.4 (402SH) です。 【補足】 Monaca以外の環境でも現象を確認しましたので、monacaタグを取り、javascriptととしての質問に変更させていただきます。 1.5分を過ぎたころからGCが一切動かなくなり、数分ごとにメモリが階段状に増えていきます。 確認環境は、 Monacaデバッガー + Android 4.4.4 (402SH) Monacaでのデバッグビルドapk + Android 4.4.4 (402SH) Cordova6.2.0でのビルドapk + Android 4.4.4 (402SH) PC(win7) + chrome
回答: `monaca`で`OnsenUI`をつかってますか? `OnsenUI`は最初にアクセスする`index.html`からブラウザ視点でみると遷移しません。 `index.html`に`ons-page`を読み込み追加して表示します。 ですので、グローバルの`window`にバインドされるタイマーは `OnsenUI`で`pushPage`で遷移してものこります。 `prePush`や、`prePop`のイベントにバインドし、タイマーをクリアしないと残り続けます。