web-dev-qa-db-ja.com

Androidさまざまな電話/デバイスおよびOSバージョンのヒープサイズ

Android携帯電話のヒープサイズがOSバージョンで設定されているものに応じて一定の値であるかどうか、または携帯電話のプロデューサーが決定できる設定であるかどうかは誰にもわかりますか?

ヒープサイズは、電話機のRAMの量に比例しますか?

私は、アプリケーションのヒープサイズが16Mであると人々が言う記事だけを見つけました。ただし、これらの記事は少し古いです。私が見るものから、一例として、ヒープサイズは特定のモデルで約20Mから最大24Mまで変化します。この携帯電話には768MのRAMが搭載されています。

71
Eric Nordvik

Android携帯電話のヒープサイズがOSバージョンで設定されているものに応じて一定の値であるかどうか、または携帯電話のプロデューサーが決定できる設定であるかどうかは誰にもわかりますか?

技術的には、電話プロデューサーが決定できる設定です。 Androidはオープンソースです。最近見たことがありませんが、互換性定義ドキュメントでヒープサイズの要件を説明していることは思い出せません。

ヒープサイズは、電話機のRAMの量に比例しますか?

いいえ、高解像度の画面はより大きなビットマップを操作する傾向があるため、画面解像度に基づいている傾向があるため、Googleはヒープサイズの推奨事項を作成します。

私は、アプリケーションのヒープサイズが16Mであると人々が言う記事だけを見つけました。

[Android] "heap size"でStackOverflowを検索すると この回答 になります。

51
CommonsWare

Build.propファイルから抽出されたデバイス情報(adb -d pull /system/build.prop):

電話(Androidバージョン):

  • HTC Wildfire(2.2.1)= 16MB
  • HTC Wildfire S(2.3.5)= 20MB
  • HTCサルサ(2.3.3)= 20MB
  • HTC Desire(2.3.3)= 32MB
  • HTC Desire S(2.3.5)= 32MB
  • Sprd-リッチビュー-S111(2.3.5)= 32MB
  • Samsung Galaxy S GT-I9000(2.2)= 48MB
  • Samsung Galaxy R GT-I9103(2.3.5)= 64MB
  • Samsung Galaxy Y GT-S5360(2.3.5)= 64MB
  • Samsung Galaxy Note N7000(4.1.2)= heapstartsize = 8m、heapgrowthlimit = 64m、heapsize = 256m
  • Samsung Galaxy S3 GT-I9300(4.3、xhpdi)= 8/64/256MB
  • Samsung Galaxy S4 GT-I9505(4.4、xxhpdi)= 8/128/512MB
  • Google Galaxy Nexus(4.3)= 8/96/256MB
  • Google Nexus 4(4.4、xhdpi)= 8/192/512MB
  • Google Nexus 5(4.4、xxhdpi)= 8/192/512MB
  • Samsung Galaxy S6 SM-G920W8(7.0)= 8/256/512MB

タブレット(Androidバージョン):

  • Samsung Galaxy Tab GT-P1000(2.2)= 48MB
  • Samsung Galaxy Tab 8.9 GT-P7300(3.2)= 5/64/288MB
  • Samsung Galaxy Tab 10.1 GT-P7500(3.2)= 5/64/288MB
  • Samsung Galaxy Tab 3 10.1 GT-P5200(4.2、mdpi)= 8/96/256MB
  • Acer Iconia A500(3.2.1)= 5/48/256MB
  • Kindle Fire HD 7 "(4.0.3)= 5/48/256MB
  • Asus Transformer Prime TF201(4.1.1)= 5/48/256MB
  • Nexus 10(4.4.3)16/192/512 MB
122
spatialist

電話のプロデューサーだけでなく、Android OSのバージョンを作成するユーザーは、デバイスの特定の要件に基づいて、最大許容ヒープサイズを指定できます。一部のAndroid CyanogenModなどのルートでは、ユーザーがヒープサイズを設定として選択することもできます。

メソッドを使用して最大許容ヒープサイズを検出できます

Runtime.getRuntime().maxMemory();

このトピックに関する追加情報が利用可能です here

アプリが通常16MB以上のヒープを必要とする場合、推奨されるアプローチは、マニフェストに最小OSバージョンレベルを設定することです。これにより、アプリをダウンロードする圧倒的多数が少なくとも必要な量を確保し、そのふるいを通過する最適なヒープ量より少ない少数のユーザーのために、必要に応じてヒープ要件を16MBの基本レベルまで削減する方法で、機能を適切に低下させる方法。

電話RAMとOSバージョン(現在の、オリジナルではなく、OSに基づく)との関連付けを示すいくつかの図があります。少なくとも1GBの電話はRAMほとんどの場合、16MBを超えるヒープがあります。ここでの割合は、合計ではなく、指定されたメモリをサポートする電話modelsの数ですこれらの数値は、入力を次の電話ファインダー(1500 Android電話モデルを含む)にプラグインすることによって取得されたため、球体の数字のみです。 http://www.gsmarena.com/search.php

現在のOSバージョン(起動時のバージョンではない)による、少なくとも1GBのRAMを搭載した電話modelsの割合:

Phones running         Percent of models having at least 1GB of RAM   Percentage of all models
4.4 and up             100 percent                                    1.5
4.3 and up             100 percent                                    2.9
4.2.x and up           74 percent                                     18.7
4.1.x and up           71 percent                                     37
4.0 and up             62 percent                                     60
2.3.x and up           57 percent                                     71
2.2 and up             44 percent                                     93
2.1 and up             44 percent                                     97
ALL OS VERSIONS:       41.5 percent                                   100
20
Carl

以下を使用して、最大VMヒープサイズを確認できるはずです。

getprop dalvik.vm.heapsize

at Android terminal(connectbotまたはadb Shellなど)。build.propファイルで読み取り/書き込みを再マウントし、ヒープサイズを設定することもできます。(リカバリがインストールされていることを確認してください誤って小さくしすぎた場合、再設定できますが、起動しません)。

11
NoBugs

アプリケーションが使用できる「VMバジェット」は、デバイスによって異なります。タブレットは通常、電話よりも大きな予算を許可します。

さまざまなデバイスで見つけた予算サイズVM=.

  • G1 = 16 Mb
  • ドロイド= 24 Mb
  • Nexus One = 32 Mb
  • Xoom = 48 Mb
  • GalaxyTab = 64 Mb。

(注:別の方法で見つけた場合はお知らせください)

9
dustmachine

実際には、画面サイズと密度に依存する定義済みの最小アプリケーションメモリがあります。

通常、モバイルデバイスにはシステムリソースが制限されています。 Androidデバイスは、単一のアプリケーションで使用できるメモリを16MBに抑えることができます。Android Compatibility Definition Document(CDD)、セクション3.7。仮想マシンの互換性はさまざまな画面サイズと密度に必要な最小アプリケーションメモリアプリケーションは、この最小メモリ制限の下で実行するように最適化する必要がありますが、多くのデバイスはより高い制限で構成されていることに注意してください。

引用元: http://developer.Android.com/training/displaying-bitmaps/index.html

しかし、他の人が述べているように、各デバイスの製造業者はデバイスの実際の値を決定するため、これよりも大きくなる可能性があります(小さくはなりません)。

Androidの各バージョンの最小要件を記載した上記の互換性定義ドキュメント(CDD): https://source.Android.com/compatibility/cdd.html

Androidの最新バージョンについては、利用可能なhtmlバージョンがあり、そこでランタイムメモリセクションに直接リンクできます。 https://source.Android.com/compatibility/ Android-cdd.html#3_7_runtime_compatibility

Android 2.3:

中密度または低密度として分類された画面を持つデバイス実装は、各アプリケーションに少なくとも16MBのメモリを割り当てるようにDalvikを構成する必要があります。 高密度または超高密度に分類された画面を持つデバイスの実装は、各アプリケーションに少なくとも24MBのメモリを割り当てるようにDalvikを構成する必要があります。デバイスの実装では、これらの数値よりも多くのメモリを割り当てる場合があります。

最新バージョンでは、代わりに画面密度などに依存するテーブルがあります。

Android 4.2、そのテーブルの行の例:

小/通常/大サイズおよびxhdpi密度:64MB

Android 6、抽出:

小/通常xhdpi:80MB

小/通常xxhdpi:128MB

小/通常xxxhdpi:256MB

これらのドキュメントには、他のAndroid 2.x、4.x、5.x、および6バージョンの表もあります(上記のCDDリンクを参照)。

特定のデバイスの画面密度などを簡単に見つけるには、このGoogleリンクを参照してください: https://design.google.com/devices/

このデータは私のために働いています。 Select Emulator Tablet Android TV RAM 1536MB VM HEAP 16MB Internal Storage 800MB Studio -managed 100

0
Manibala Sinha