Sobes.tech
Middle

Hoe vraag je meer RAM-toewijzing voor de applicatie aan?

sobes.tech AI

Antwoord van AI

Android beperkt de hoeveelheid RAM die voor elke applicatie beschikbaar is om de stabiliteit van het hele systeem te waarborgen. Deze limiet wordt de heap size genoemd.

Meestal is het niet nodig om dit direct aan te passen, omdat het systeem het geheugen automatisch beheert. In zeldzame gevallen, bijvoorbeeld bij het werken met grote rasterafbeeldingen of datasets, kan het nodig zijn om de heap size te vergroten.

Je kunt een groter volume aanvragen door het attribuut android:largeHeap="true" toe te voegen aan de <application> tag in het bestand AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jouw.pakketnaam">

    <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"> // Verzoek om meer geheugen

        <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>

Belangrijk:

  • Het gebruik van android:largeHeap="true" moet gerechtvaardigd zijn en niet misbruikt worden. Dit kan de systeemprestaties negatief beïnvloeden als meerdere applicaties grote hoeveelheden geheugen aanvragen.
  • Zelfs met android:largeHeap="true" bestaat er een bovengrens voor toegewezen geheugen, afhankelijk van het apparaat en de Android-versie.
  • Het is beter om het geheugengebruik in de applicatie te optimaliseren dan te vertrouwen op het vergroten van de heap size.

Om de huidige heap size programmatisch te verkrijgen:

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

// Omgezet naar megabytes voor gemak
long heapSizeMB = heapSize / (1024 * 1024);
long freeSizeMB = freeSize / (1024 * 1024);
long allocatedSizeMB = allocatedSize / (1024 * 1024);

Informatie over de geheugenmaten helpt te begrijpen hoe efficiënt de applicatie de bronnen gebruikt en of het echt nodig is om een groter volume aan te vragen.