Sobes.tech
Middle

Kako zatražiti dodelu većeg obima RAM-a za aplikaciju?

sobes.tech АИ

Одговор од АИ

Android ograničava količinu RAM-a dostupnu za svaku aplikaciju kako bi osigurao stabilnost celog sistema. Ovaj limit se naziva veličina hrpe (heap size).

Obično nije potrebno da ga direktno menjate, jer sistem automatski upravlja memorijom. Međutim, u retkim slučajevima, na primer, kada radite sa velikim rastrovskim slikama ili skupovima podataka, može biti potrebno da povećate veličinu hrpe.

Možete zatražiti veći obim dodavanjem atributa android:largeHeap="true" u oznaku <application> u fajlu AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="vaš.paket.naziv">

    <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"> // Zahtev za većom memorijom

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

Važno:

  • Korišćenje android:largeHeap="true" mora biti opravdano i ne sme se zloupotrebljavati. To može negativno uticati na performanse sistema ako više aplikacija zahteva veliku količinu memorije.
  • Čak i sa android:largeHeap="true", postoji gornja granica dodeljene memorije, koja zavisi od uređaja i verzije Androida.
  • Bolje je optimizovati korišćenje memorije u aplikaciji nego se oslanjati na povećanje heap size.

Da biste programatski dobili trenutnu veličinu hrpe:

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

// Pretvoriti u megabajte radi jednostavnosti
long heapSizeMB = heapSize / (1024 * 1024);
long freeSizeMB = freeSize / (1024 * 1024);
long allocatedSizeMB = allocatedSize / (1024 * 1024);

Informacije o veličini memorije pomoći će da se razume koliko efikasno aplikacija koristi resurse i da li je zaista potrebno tražiti veći obim.