Sobes.tech
Middle

Kuidas taotleda rakenduse jaoks suuremat operatiivmälu määramist?

sobes.tech AI

Vastus AI-lt

Android piirab iga rakenduse saadaval oleva operatiivmälu kogust, et tagada kogu süsteemi stabiilsus. Seda piirangut nimetatakse heap size.

Tavaliselt ei ole vaja seda otse muuta, kuna süsteem haldab mälu automaatselt. Kuid harvadel juhtudel, näiteks töötades suurte rasterpiltide või andmekogumitega, võib olla vajalik heap size suurendada.

Päring suurema mahu saamiseks saab lisada atribuudi android:largeHeap="true" <application> sildi juurde AndroidManifest.xml failis:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="teie.paki.nimi">

    <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"> // Nõue suurema mahu jaoks

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

Oluline:

  • android:largeHeap="true" kasutamine peab olema põhjendatud ning seda ei tohi kuritarvitada. See võib negatiivselt mõjutada süsteemi jõudlust, kui mitu rakendust nõuavad suurt mälu.
  • Isegi koos android:largeHeap="true" on määratud mälu ülemine piir, mis sõltub seadmest ja Androidi versioonist.
  • On parem optimeerida mälu kasutust rakenduses, kui loota ainult heap size suurendamisele.

Praeguse heap size saamiseks saab programmeerida:

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

// Konverteerimine megabaitidesse mugavuse huvides
long heapSizeMB = heapSize / (1024 * 1024);
long freeSizeMB = freeSize / (1024 * 1024);
long allocatedSizeMB = allocatedSize / (1024 * 1024);

Mälu suuruse teave aitab mõista, kui tõhusalt rakendus ressursse kasutab ning kas on tõesti vaja taotleda suuremat mahu.