Sobes.tech
Middle

Hogyan kérhetünk több RAM-ot az alkalmazásnak?

sobes.tech MI

Válasz az MI-től

Az Android korlátozza az egyes alkalmazások számára rendelkezésre álló RAM mennyiségét, hogy biztosítsa az egész rendszer stabilitását. Ezt a limitenek nevezik a heap méretét.

Általában nem szükséges közvetlenül módosítani, mivel a rendszer automatikusan kezeli a memóriát. Ritka esetekben, például nagy raszterképek vagy adathalmazok esetén, szükség lehet a heap méretének növelésére.

Nagyobb mennyiség kéréséhez adj hozzá az android:largeHeap="true" attribútumot az <application> címkéhez az AndroidManifest.xml fájlban:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="a.te.csomag.neve">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:largeHeap="true"> // Kérelem nagyobb memóriára

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Fontos:

  • Az android:largeHeap="true" használata indokoltnak kell lennie, és nem szabad visszaélni vele. Ez negatívan befolyásolhatja a rendszer teljesítményét, ha több alkalmazás kér nagy mennyiségű memóriát.
  • Még az android:largeHeap="true" mellett is létezik felső határ a kiosztott memóriára, amely a készüléktől és az Android verziójától függ.
  • Jobb optimalizálni az alkalmazás memóriahasználatát, mint a heap méretének növelésére támaszkodni.

A programozott módon lekérhető aktuális heap méret:

long heapSize = Runtime.getRuntime().maxMemory();
long freeSize = Runtime.getRuntime().freeMemory();
long allocatedSize = Runtime.getRuntime().totalMemory();

// Átalakítás megkönnyítésért megabájtokra
long heapSizeMB = heapSize / (1024 * 1024);
long freeSizeMB = freeSize / (1024 * 1024);
long allocatedSizeMB = allocatedSize / (1024 * 1024);

Az említett memória méretek segítenek megérteni, hogy az alkalmazás mennyire hatékonyan használja az erőforrásokat, és valóban szükség van-e nagyobb mennyiség kérésére.