重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

iPhoneで仮想メモリを脱獄なして使う方法ありますか?メモリ不足でアプリが落ちます

質問者からの補足コメント

  • アプリの最適化レースゲームだとレーススタートしたら前の情報がストレージに保管されてコースとグラフィック車だけの情報をメモリに入れたとしても足りないのであればコース半分をメモリに出してもう半分はストレージにしまって事前ロードみたいな感じで待機してくれるのか仮想メモリですか?

      補足日時:2024/09/20 23:54

A 回答 (2件)

質問はメモリスワップですね



メモリスワップはOSの機能として実装されているので、iOSに最初から機能として実装されていなければ、iOSを入れ替えないと実現できません

また、メモリスワップが頻発すると、パフォーマンスに影響を及ぼすので、ゲームプレイがまともにできなくなると思います

そのため、ある程度のメモリサイズなどにより、iOSで制限をかけているかもしれません

補足コメントに対して

仮想メモリとは、物理メモリを細かく分けて、「仮想メモリアドレス空間」にマップする機能です。基本的には、メモリの確保と開放を連続して行うことによる、虫食い状態(フラグメンテーション)が発生しても、メモリを有効に活用するようにできる機能です

例えば、4GBの物理メモリの場合:
単一アプリが、AABBCCで別個に、それぞれ1GBを確保すると、メモリマップは以下のようになり、--の未使用部分になります。
AABBCC--

この状態で、BBの1GBをアプリが開放すると、歯抜け状態、つまり、フラグメンテーションが発生します。--は未使用部分
AA--CC--

空きメモリは2GBあり、アプリが2GBのメモリを使用したいしても、物理メモリのメモリアドレス空間には、2GBの連続したエリアが確保できないので、空きメモリがあったとしても、物理的に使えなくなります

これが、仮想メモリの場合は、メモリアドレスが仮想的に拡張されているので、下記のようになっている場合には、CCの後に、2GBのメモリをマップすることが可能になります
AA--CC--



AA--CCDDDD

となり、本来であれば、物理メモリが存在していないメモリアドレスを利用して、DDDDに2GBのメモリをマップして使えるようになります。これが仮想メモリです。


この手法を利用して、空きメモリがなくなった場合に、メモリの内容をストレージに退避して、空きメモリを作り出す方法として、メモリスワップがあります。androidではメモリ拡張機能と、Windowsなどでは、スワップファイル(ページファイル)と呼んでいるものです

これは、利用してないメモリを一時的にストレージに退避させて、空きメモリを増やす技術です

ABCDでそれぞれ1GBのメモリを使用し、物理メモリ4GBのメモリ全てを使ってしまっているケースを例にすると

AABBCCDD

追加で、2GBのメモリを使いたいが、空きメモリがないため、アプリによって利用されるために確保されているが、アプリの操作が行われていないなどのケースで、一時的に使用していない、AA(1GB)とCC(1GB)の内容を、ストレージにスワップファイルを作成し、AAとCCのメモリの内容を退避します。そうすると、一時的に、利用できるメモリを増やすことが可能になります。メモリマップはこの時のaa, ccは、メモリスワップしている領域です

aaBBccDD

これに、新しく、EEEE(2GB)をマップする場合に、仮想メモリアドレスにマップします
aaBBccDDEEEE

今、アクティブなメモリは、BBDDEEEEの4GBになります。ここで、AAを再度使用する。となった場合は、使用していない、例えば、DDをスワップしてファイルに落とし込み、AAをファイルから書き戻します

AABBccddEEEE

といった感じになります。つまり、メモリスワップの機能は、OSが仮想メモリに対応してないと利用できないので、仮想メモリと、メモリスワップを同一視される方が多いですが、フラグメンテーションに対して空きメモリを有効活用するための技術が仮想メモリで、メモリの空きを作るために、メモリの内容をストレージに退避するのが、メモリスワップです

メモリスワップは、一時的にメモリを増やす方法としては有効な手段ですが、ストレージへのアクセスが発生するため、スワップが連発すると、書き込み、読み戻し、書き込み、読み戻しと何度も繰り返すことになるので、パフォーマンスが非常に悪くなります

根本的な解決方法は一度に使用できる物理メモリを増やす方法になります
    • good
    • 0
この回答へのお礼

お答えありがとうございます

お礼日時:2024/09/21 23:54

脱獄した場合、設定を自由に弄れるようになるのでしょうか? それでも、メモリ不足でアプリケーションが落ちてしまうのは、実メモリが少ない所為でしょうし、それに加えて仮想メモリで使う eMMC(ROM=フラッシュメモリ)の空き容量も少ないからではないでしょうか?



※仮想メモリは、メインメモリが一杯の場合に使っていないメモリの一部を eMMC に書き出してメモリを空け、そこに実行すべき命令やデータを読み込みます。書き出した eMMC で動作すと言う訳ではありません。処理が終了したら、書き出した内容を元に戻して処理を継続します。メモリ不足の度にこれを繰り返しますので、eMMC を読み書きする時間が処理に追加され遅くなってしまいますし、eMMC の寿命にも影響があります。

iPhone だと Micro-SDH/SDXC カードを使でいませんので、使わないアプリケーションをアンインストールして、eMMC の空き容量を増やすしかないでしょう。

iPhone の上位への買い替えの方が、効果的でしょうけれど。
    • good
    • 0
この回答へのお礼

iPhonex 3GB 64/10GB利用できます

お礼日時:2024/09/20 23:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A