Adobe AIRの連続稼働時間を調べてみました。
EnterFrameでテキストフィールドの文字を書き換え続けるアプリを作って、Windows8.1 with Bing 64bitでずっと起動したままにしておきました。
2016年4月11日14時46分51秒に起動しました。
2016年6月25日4時20分31秒に止まりました(ウィンドウ自体は開いている)。
*Windowsの更新プログラムの確認は止めて、Adobe AIRの自動アップデートも無効にしました。
最後にgetTimer()が示した数字は「2147483381」でした。
これは、intの正の範囲「2,147,483,647」に266ミリ秒迫る値です。
2,147,483,647を超えた瞬間に止まった可能性が考えられます。
「なるほど、getTimer()はintで返すから、桁があふれて止まったのだな」
と、納得したいところですが、そうはいきません。
起動時刻の4月11日14時46分51秒から6月25日4時20分31秒まで、74日13時間33分40秒間です。これは、ミリ秒に直すと「6,442,420,000」になります。
intの正数部(2,147,483,647)のほぼ三倍にあたります。
getTimer()自体はintですが、最初に2,147,483,647を超えた時(5月6日)は止まりませんでした。uintにキャストすると、超えてカウントを続けていることがわかりました。
次にuint(0~4,294,967,295)の桁があふれた時(5月31日)は、0に戻りました。
そして今回6月25日に、intの正の範囲を超える直前に停止しました。
なかなか解釈に困る振る舞いです。
また、「ほぼ三倍」ではありますが、2,147,483,647の三倍は6,442,450,941なので、6,442,420,000は30秒あまり差があります。
見過ごせない大きさです。
・Windowsの時計にずれがあった。
・そもそも時刻とは別な要因で止まったが偶然に3倍に近かった。
どちらでしょうか、あるいは別な理由でしょうか。
引き続き、調整して連続稼働時間の確認をします。
とりあえずここまでは、日時を表示するだけであれば、Adobe AIRは74日あまり連続稼動することがわかりました。
2017年8月29日追記
ちょっと改造したものを2016年11月23日から稼動させていたら、2017年8月23日までの273日間動いていた模様。
今回も、getTimer()がintの桁あふれ直前で止まっていました。
アプリファイル一式
https://github.com/umhr/WatchMen