[解決済み] アプリが使用できるRAMの最大量はどのくらいですか?
質問
に関する質問で、かなり気になることがあります。 Androidオペレーティングシステムのメモリ管理 ということで、かなり詳細な回答を期待します。
知りたいこと
- とは何ですか? 最大メモリ容量 (単位 メガバイト / として パーセント システムアプリではない)Androidアプリケーションが使用できるRAMの総量は?
- との違いはありますか? Androidのバージョン ?
- に関する違いはありますか? メーカー を選択しましたか?
そして、最も重要なこと。
- 何 は、/とみなされます。 何に依存するか アプリが実行時に使用できる RAM の量をシステムが決定する場合(アプリごとのメモリの最大値は固定値ではないと仮定)、どのように決定するのでしょうか?
これまで(2013年まで)に聞いたこと。
- 初期のAndroid端末では、アプリごとの上限が16MBだった
- その後、上限は24MBまたは32MBに増加
とても気になること。
どちらも上限がとても低いです。
最近、ダウンロードしたばかりの Androidタスクマネージャ を使用して、自分のデバイスのRAMをチェックします。これは、RAMの最大使用量である32MBを明らかに超えています。では、Androidはどのようにしてアプリが使用できるRAMの量を決定しているのでしょうか?アプリがその制限を超えることは、どのようにして可能なのでしょうか?
さらに、私のアプリのいくつかは、(システムによって殺された?) OutOfMemoryException 30-40メガバイト程度を使用した場合。一方、私の携帯電話上で動作しているアプリは 100MB以上 がクラッシュしたり、強制終了されることはありません(おそらくメモリリークのため)。 そこで また、アプリ自体にも依存することは明らかです。 RAMをどれだけ節約できるかを判断することになります。これはどのように可能なのでしょうか? (私は768MB RAMのHTC One Sでテストを行いました。)
免責事項:私はAndroidタスクマネージャーアプリと一切関係がありません。
解決するには?
<ブロッククオートAndroidアプリケーション(システムアプリケーションではない)が使用できる最大メモリ量(メガバイト単位/総RAMに対する割合)は?
それは端末によって異なります。
getMemoryClass()
オン
ActivityManager
を実行すると、コードが実行されているデバイスの値が表示されます。
Androidのバージョンによって違いはありますか?
OSの要件が年々高まっており、それに合わせて端末も調整しなければならないという点では、そうですね。
<ブロッククオート端末のメーカーによる違いはあるのでしょうか?
メーカーがデバイスを製造している以上、デバイスによって大きさは異なります。
アプリが使用できるRAMの量を決定する際、どのようなサイドファクターが考慮されるのですか?
サイドファクターとは何ですか?
初期のデバイスはアプリごとの上限が16MB、後のデバイスは24MBまたは32MBに増加した
それくらいがちょうどいいんです。画面の解像度は重要な要素で、解像度が高いほどビットマップも大きくなるので、タブレットや高解像度の携帯電話ではまだ値が高くなる傾向があります。例えば、48MBのヒープを持つデバイスを見かけますが、それ以上の値があっても不思議ではありません。
<ブロッククオートアプリがその制限を超えるのはどうしてですか?
そのアプリの作者が何をやっているのか分かっていると仮定しているのですね。ということを考えると アプリのメモリ使用量は、Androidのコアエンジニアが判断するのは難しい そのため、当該アプリが必ずしも正確な結果を出しているとは思えません。
とはいえ、ネイティブコード(NDK)はヒープ制限の対象外です。Android 3.0 以降、アプリは "大きなヒープ" を要求することができ、通常は数百 MB の範囲ですが、ほとんどのアプリでは不適切な形式と見なされています。
<ブロッククオートさらに、私のアプリの中には、30~40メガバイト程度を使用すると、OutOfMemoryExceptionでクラッシュするものがあることに気づきました。
Androidのガベージコレクタは、コンパクト化するガベージコレクタではないことに留意してください。例外は本当に
CouldNotFindSufficientlyLargeBlockOfMemoryException
が、これは言葉足らずと判断されたのでしょう。
OutOfMemoryException
というのは
要求したブロックを割り当てられませんでした。
ヒープを完全に使い切ったわけではありません。
関連
-
[解決済み] JVM起動時のパラメータ「-Xms」「-Xmx」とは何ですか?
-
アプリはGoogle検索でインデックスされません Androidmanifestのクソみたいな黄色い警告
-
repo: コマンドが見つかりません
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] アプリケーションを終了することは嫌われますか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み】プログレスダイアログとバックグラウンドスレッドがアクティブなときに、画面の向きが変わるのをどう処理するか?
-
[解決済み】root権限なしでインストールしたアプリのAPKを取得する方法は?
-
[解決済み] iosアプリの最大メモリ使用量
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
aapt2エラー:ログを確認する(具体的な原因の探り方)
-
Android: インポートモジュールエラー Android リソースのリンクに失敗しました
-
IllegalStateException。ArrayAdapter は、リソース ID が TextView である必要があります。
-
アンドロイドスタジオのエラーを解決する --> Error:(1, 0) id 'com.android.application' を持つプラグインが見つかりません。
-
問題 ---- Android ---- ActivityManager: Error: アクティビティクラス{xx/xx.MainActivity}が存在しない
-
Androidカスタムドロップダウンリストボックスコントロール
-
Android Studio http://schemas.android.com/apk/res/android 「URIが登録されていません」の解決方法について
-
android.content.ActivityNotFoundException を解決します。Intent問題を処理するActivityが見つからない
-
[解決済み] Androidでアプリケーションのメモリ使用量を確認するにはどうすればよいですか?
-
[解決済み] Androidのアプリケーションヒープサイズを検出する