誰でもAndroidメモリ管理へのリンクを詳しく説明したり提供したりできますか。Android の仮想メモリ スキームについて混乱しています。Androidでページングはどのように行われますか? ハードディスクがない場合、どうやってそれを行うのですか? 彼らはキャッシングを持っていますか?
2 に答える
Android でのメモリ管理に関するリンクを次に示します。
詳細な投稿 http://mobworld.wordpress.com/2010/07/05/memory-management-in-android/
そして、メモリ分析に関する素敵なブログ投稿 http://android-developers.blogspot.com/2011/03/memory-analysis-for-android.html
メモリ リークを回避する方法 http://android-developers.blogspot.co.uk/2009/01/avoiding-memory-leaks.html
Linux カーネルと jvm は、リンゴとオレンジとして扱う必要があります。この 2 つを混同すると、悲惨な結果になる可能性があります。
たとえば、Linux カーネルの仮想メモリは本質的にスワップ ファイルであり、個々のプロセス サイズに制限を設定しないため、ファイルがいっぱいになると「スラッシング」またはエンドレス スワップが発生します。
まったく対照的に、jvm (これは別の Linux プロセスです) は、そのアプリケーションに共通の最大サイズ (たとえば 256MB) を設定します。通常、Android アプリは独自の jvm で実行され、特定の jvm が「スラッシング」するのを防ぎます。むしろ、GC は OOM をスローして終了します。
Android はさらに、カーネル仮想メモリが不足するとアプリ (アクティビティ スレッドのグループであるタスクを含む jvm) を強制終了し、必要に応じて後で再起動します。それでもフリーズ(スラッシュ)する可能性がありますが、たとえば、それほど頻繁ではありません。無人の Linux データベースまたは Web サーバー。
スラッシング (凍結) アンドロイドの解決策は、スラッシング Linux サーバーとまったく同じです。バウンス (電源を入れ直します)。Linuxサーバーだからです。
Android が、マルチスレッド プロセス (jvm は 1 つのタイプにすぎません) の無限の群れをホストできる、完全に接続されているものの、ほとんどがアイドル状態である何百万ものパーベイシブな Linux サーバーを世界に提供したことを考えると、やや深遠です。
それは究極のスーパー コンピューターの骨組みを備えており、最も精巧なデータ センターでさえ小さく見えます。
これは、ほとんどの Android が CPU よりも数百倍高速な並列プロセッサ (GPU) を備えていることは言うまでもありません。それらを起動する方法を知っている少数のゲーマーを除いて.
概要として意図しただけですが、このスレッドにはすでに優れたリンクがあります。