iMemoryGraphがアップデートしてさらに強力なメモリ開放機能追加とメモリ管理のこと

iPhoneやiPadのメモリを一発開放してくれるアプリ『iMemoryGraph』がアップデートし、iOS6/iPhone5対応の他、さらに強力にメモリを開放する機能が追加されました。iPhone5の空きメモリを通常500MB程度まで開放するところ700MBまで開放してくれます。

ただし、強化版はクラッシュすることもあり不安定な気がします。メモリ開放中にネイティブアプリを巻き込んでクラッシュする場合があります。特に手元のiPhone4S(iOS6)では結構な頻度です。まさに「バルス!」

iMemoryGraph 1.8.2
ユーティリティ, ビジネス
App Storeで詳細を見る

メモリ開放にはアドオン(¥85)が必要です。なお、既知の不具合として、iPad(iOS6)でランドスケーブモードで起動した時に不具合があるようなのでご注意ください。2010年10月27日のバージョン1.8.1へのアップデートで解消されています。

追加されたbalusの強化版メモリ開放は、アプリ概要には「(玄人用)」としか書いていないので詳細不明ですが、通常のサードパーティアプリ加えて、Appleが提供するネイティブアプリやデーモンプロセスの一部まで拡大してメモリを開放しています。

ちょっと困るのが強化版はSafariも終了させるのでSafari上で何かのサービスにログインした状態でbalusを実行すると強制的にログアウトします。そのためセッション管理しているサービスなどは以下のように正常終了していないと判定される場合がありますので注意が必要です。他にもメモリ開放効果が高まることと引き換えに不都合が生じる可能性があります。玄人用というのはこの辺の事情なのかもしれません。

IMG_0141

アプリから実行する開放ボタン(iMemoryGraph://go)ではこの事象は発生しません。

iMemoryGraphのURLスキームは次のとおりです。

起動のみ iMemoryGraph://
通常のメモリ開放 iMemoryGraph://go
強化版でメモリ開放 iMemoryGraph://balus

“iMemoryGraph://go”でメモリ開放したところ。500MB程度しか開放されません。

IMG_0134

“iMemoryGraph://balus”だと700MB程度まで開放されます。

IMG_0138

あとはこのURLスキームを通知センターや定期的に実行するためにランチャー系アプリへ登録します。ランチャーアプリはURLスキームが使えればいいですが、リマインダ機能も備えたアプリが定期的にメモリ開放したい時にも使えて便利です。

Launch Center Pro 1.1
仕事効率化, ユーティリティ
App Storeで詳細を見る

MyShortcuts+Viewer 1.6
ユーティリティ, 仕事効率化
App Storeで詳細を見る

過去のエントリを参考まで。

iMemoryGraphのURLスキームを使って一発でメモリ開放!
https://daisukeblog.com/?p=1791
iPhoneやiPadの動作がモッサリした時に重宝するメモリ開放してくれるアプリ『iMemoryGraph』がバージョンアップして一気にメモリ開放するURLスキームをサポートしました。

※Touch Icon Creatorでホーム画面にアイコンを置く方法は、残念ながら実行してもメモリ開放の動作をしませんでした。2010年10月27日のバージョン1.8.1へのアップデートで解消されています。

ホーム画面からbalus版メモリ開放する方法[2012年10月28日追記]

バージョン1.8.1によりTouch Icon Creator経由でのURLスキーム実行が可能になりましたので追記します。Touch Icon Creatorアプリを使うとホーム画面からiMemoryGraph://balusをアプリ感覚で実行できるようになります。

Touch Icon Creator 3.5
ユーティリティ, 仕事効率化
App Storeで詳細を見る

Touch Icon Creatorをインストール後に以下のリンクをiPhoneまたはiPadのブラウザからタップすると自動的に登録画面になります。

iMemoryGraph://balusをホーム画面に登録

登録画面でアイコン名を変更できます。URLスキームは変更しないでください。アイコンはフリー素材を用意していますが、お好みに合わせて変更することができます。

IMG_0239 IMG_0240-2 2

ホーム画面に配置したアイコンをタップするとiMemoryGraphが起動し、balusを実行します。

IMG_0243

ちょっとメモリ管理のこと

iMemoryGraphで表示されるWired、Activeなど意味を調べてみました。

Wired – OSレベルの開放されないメモリ
Active – 起動中のアプリが使用しているメモリ
Inactive – 終了したアプリのデータを再利用するために残しているメモリ
Free – 空きメモリ

アプリを起動する際、Freeが足りない場合はInactiveから割り当てるのでFreeが少なくても問題ありません。

では、アプリのメモリ管理はどうなっているのか。こちらのサイトが参考になります。

Fraser Speirs – Blog – Misconceptions About iOS Multitasking
http://speirs.org/blog/2012/1/2/misconceptions-about-ios-multitasking.html

iOSアプリのメモリの状態は次のとおりです。

Not running – 動作していない(終了した、または起動されていない)
Inactive – アプリ起動中だがイベントを受け取っていない(例えば、アプリ起動時のスリープ状態)
Active – アプリ起動中
Background – 画面には表示されていないがコードが実行されている
Suspended – アプリがメモリに常駐(コードは実行されていない状態)

アプリをActiveの状態からホームボタンで終了すると、ほとんどのアプリはBackgroudからすぐSuspendedの状態になり、すばやく復帰できるようにメモリに常駐しますが活動を停止します(プロセスタイムやバッテリには影響しません)。終了後10分だけ常駐するアプリもありますが時間が過ぎれば同じようにSuspended状態になります。新しくアプリを起動する時に空きメモリが少なければ、SuspendedからNot runningにしてメモリを開放します。こうしたアプリの動作に必要なメモリ管理はiOSが自動で行っています。

(例外として、音楽アプリ、位置情報を使うアプリ、Skype等のVoIPアプリ、Newsstand、常に最新状態を受信する外部アクセサリはBackgroundに常駐し自動では開放されないので手動でオフにする必要があります。バッテリーやCPUにも負荷がかかります)

なお、ホームボタンをダブルタップして現れるMultitasking Barは起動したアプリの履歴です。これをActiveやBackground状態にあるアプリと混同しがちです。ここに表示するアプリを手動で削除すれば、確かに空きメモリを増やすことは出来ますが、(理論上は)iOS側で自動的に開放してあらたなアプリに割り当てるので、この作業はあまり意味がないことになります。

IMG_0140

iOSにメモリ開放アプリは必要なのか?

理論上はiOS側で自動的にメモリ割当、開放をしているのでメモリ管理アプリは不要なのでしょう。ただ、iPhone5だとほとんど感じられなくなりましたが、iPhone4Sまで感じていたようなメモリ不足と思われるようなスクロールの引っかかり、起動に時間がかかったりするような事象には効果があるように思います。