8

誰でもAndroidメモリ管理へのリンクを詳しく説明したり提供したりできますか。Android の仮想メモリ スキームについて混乱しています。Androidでページングは​​どのように行われますか? ハードディスクがない場合、どうやってそれを行うのですか? 彼らはキャッシングを持っていますか?

4

2 に答える 2

4

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

于 2011-04-13T19:50:43.250 に答える
1

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) を備えていることは言うまでもありません。それらを起動する方法を知っている少数のゲーマーを除いて.

概要として意図しただけですが、このスレッドにはすでに優れたリンクがあります。

于 2015-07-13T19:46:32.723 に答える