金属アレルギー 看護師 求人 大阪

iOS4のメモリ管理はあまり賢くない

ios4-multitasking.jpg

iOS4を快適に使ってる中で唯一不満に思う事は、メモリ管理の面倒臭さです。
色々なアプリを常駐させてランチャー代わりにしていると、比較的メモリに余裕のあるiPhone4でも、いつのまにか残りメモリが50MBを切ってしまう事もしばしば。
結果的にアプリを切る作業が必要となるのですが、この作業自体が何だか前時代的で、いかにも古臭い。
iOSのメモリ管理はどのように行われているのか、また今後どのように改善される事が好ましいのでしょうか?



iOS4のマルチタスクは、ipodやskype等のAPIの使用が許可された一部のアプリを除き、バックグラウンドに回るアプリを一時停止状態で保持する ハイバネーションを採用しています。
アプリを再度選択すると一瞬で起動し、状態も保存されたまま使い始める事が出来るのもこのためです。
非常に便利な反面、バックグラウンドにアプリがたまると途端にメモリ不足に陥るというデメリットも併せ持っています。

また一般的なMacやPC等のパソコンが仮想メモリというメモリ管理方法を取っているのに対して、iPhoneでは仮想メモリは使われていません。
iPhoneに使われているフラッシュドライブの特性から考えると、頻繁にIN-OUTが行われるswapメモリを載せる事は現実的ではないのでしょう。
デバイスに搭載されたメモリ容量がそのまま利用メモリの上限という事になり、快適に使う為には厳密なメモリ管理が求められます。


【アプリの挙動を管理するiPhoneアプリは製作可能か】

AppleがiOS4を発表した記者会見で、ある記者がスティーブ・ジョブズにこんな質問をしました。
記者A「iOS4がマルチタスクをサポートするとなると、メモリー管理はどの様な方法になるのか?」

その質問に対してジョブズはこう答えました。
「iOS4は最適なメモリ管理を自動的にOS側で行う。ユーザーがメモリ管理をする必要は無い。」

何ともAppleらしい受け答えなのには笑ってしまいますが、このやりとりがAppleのメモリ管理に対する見解を端的に表した物ではないでしょうか。

AndroidではアプリのハイバネーションのON-OFFを管理しメモリを最適化するアプリがあり、人気を博しています。
その一方で、iPhoneではひとつのアプリがその他のアプリの挙動を制御するようなプログラミングは許可されていません。
メモリ解放アプリは起動するアプリに関係なく、OSが確保したメモリ領域を強制的にリリースするものなので、厳密に言うとメモリ管理ではありません。
AppleがAPIを解放すれば上記のようなアプリの製作は可能になるでしょうが、セキュリティの観点から許可される事は無いでしょう。
現時点でマルチタスクを快適に使う為のメモリ管理は、OS側での最適化を待つ以外になさそうです。


【iOS4.1でメモリ管理は最適化されるのか】

近々リリース予定とされるiOS4.1ですが、iPhone3Gの不具合修正を含むとされています。
OS側での使用メモリが増え、ユーザーが利用できるメモリ領域が著しく減った為にもともとメモリ容量の少ないiPhone3Gではアプリ使用もままならない程のメモリ不足に陥っているのです。
このような状況を改善するには、OSの使用メモリを下げ、ユーザーが使用するメモリ領域を増やすしかありません。

皆さんも御存じのように‬iOSはそのiPhoneのバージョンを問わず、共通して使われます。
機種により動いているdaemonが多少異なりますが、基本的には同じ物と考えて差し支えないでしょう。
噂の通りiPhone3Gのモッサリ解消がOS側で行われるとすれば、それはiOS4のメモリ使用が最適化する事を意味し、iPhone3GSやiPhone4においても ユーザー利用メモリが増える事を意味します。

メモリ管理の根本的な改善ではありませんが、使用メモリが増えればその分マルチタスクにも余裕が出てくるでしょう。
それまでの間は、ユーザー側でその都度管理してあげる必要があるようです。


【関連エントリー】
そのiPhoneアプリ、アップデートが本当に必要ですか?
【iPhone3G】iOS4のモッサリを何とかしたい
iPhone3GSでiOS4を快適に使う為に


管理者にだけ表示を許可する



Related Posts Plugin for WordPress, Blogger...