Middle
Kaip prašyti skirti daugiau operatyviosios atminties programai?
sobes.tech AI
Atsakymas iš AI
Android apriboja kiekvienos programėlės prieinamą operatyviosios atminties kiekį, kad užtikrintų visos sistemos stabilumą. Šis limitas vadinamas heap size.
Dažniausiai jo keisti tiesiogiai nereikia, nes sistema automatiškai valdo atmintį. Tačiau retais atvejais, pavyzdžiui, dirbant su dideliais rastro vaizdais ar duomenų rinkiniais, gali prireikti padidinti heap size.
Norint prašyti didesnio kiekio, galima pridėti atributą android:largeHeap="true" prie <application> žymos AndroidManifest.xml faile:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jūsų.krepšelio.pavadinimas">
<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"> // Prašymas didesnio kiekio
<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>
Svarbu:
- Naudojant
android:largeHeap="true"turi būti pagrįsta ir neperžengti. Tai gali neigiamai paveikti sistemos našumą, jei keli programėlės prašo didelės atminties. - Net ir su
android:largeHeap="true"yra viršutinė riba, kuri priklauso nuo įrenginio ir Android versijos. - Geriau optimizuoti atminties naudojimą programėlėje, nei pasikliauti heap size didinimu.
Gauti esamą heap size galima programiniu būdu:
long heapSize = Runtime.getRuntime().maxMemory();
long freeSize = Runtime.getRuntime().freeMemory();
long allocatedSize = Runtime.getRuntime().totalMemory();
// Konvertuoti į megabaitus patogumui
long heapSizeMB = heapSize / (1024 * 1024);
long freeSizeMB = freeSize / (1024 * 1024);
long allocatedSizeMB = allocatedSize / (1024 * 1024);
Informacija apie atminties dydžius padės suprasti, kaip efektyviai programa naudoja išteklius ir ar tikrai reikia prašyti didesnio kiekio.