Saya menulis aplikasi Android yang menggunakan beberapa model 3D. Model dengan tekstur seperti itu bisa menghabiskan banyak memori. Saya menemukan pabrikan menetapkan batas ukuran tumpukan aplikasi yang dapat digunakan. Misalnya tablet saya Samsung Galaxy Tab 8.9 P7310 dapat mengambil 64MB memori.
Apakah ada cara untuk meningkatkan ukuran memori ini yang dapat digunakan aplikasi?
largeHeap=true
FTWAplikasi yang berjalan di API Level 11+ dapat memiliki
android:largeHeap="true"
pada<application>
elemen di manifes untuk meminta ukuran heap yang lebih besar dari normal, dangetLargeMemoryClass()
padaActivityManager
akan memberi tahu Anda seberapa besar heap itu. Namun:Ini hanya berfungsi pada API Level 11+ (yaitu, Honeycomb dan lebih tinggi)
Tidak ada jaminan seberapa besar tumpukan besar itu
Pengguna akan melihat permintaan tumpukan besar Anda, karena itu akan
memaksa aplikasi lain mereka keluar dari RAMmengakhiri proses aplikasi lain untuk membebaskan RAM sistem untuk digunakan oleh tumpukan besar AndaKarena # 3, dan fakta bahwa saya berharap
android:largeHeap
akan disalahgunakan, dukungan untuk ini dapat ditinggalkan di masa depan, atau pengguna mungkin diperingatkan tentang ini pada waktu pemasangan (misalnya, Anda perlu meminta izin khusus untuk itu )Saat ini, fitur ini didokumentasikan secara ringan
sumber
inBitmap
diBitmapOptions
). Di luar itu, hapus semua referensi kepada mereka, dan akhirnya mereka akan mengumpulkan sampah.android:largeHeap
. Namun, meminta tumpukan besar dapat membahayakan pengalaman pengguna secara keseluruhan, dengan memaksa proses aplikasi lain untuk mengakhiri lebih awal dari yang seharusnya diperlukan.Anda tidak dapat meningkatkan ukuran tumpukan secara dinamis.
Anda dapat meminta untuk menggunakan lebih banyak dengan menggunakan
android:largeHeap="true"
dalam manifes.juga, Anda dapat menggunakan
native memory (NDK & JNI)
, sehingga Anda benar-benar melewati batasan ukuran tumpukan.berikut adalah beberapa posting yang saya buat tentang itu:
Cara men-cache bitmap ke memori asli
Operasi bitmap JNI, untuk membantu menghindari OOM saat menggunakan gambar besar
dan inilah perpustakaan yang telah saya buat untuk itu:
sumber
Gunakan proses kedua. Nyatakan
AndroidManifest
baruService
denganPertukaran antara proses pertama dan kedua berakhir
BroadcastReceiver
sumber
Ini dapat dilakukan dengan dua cara sesuai dengan OS Android Anda.
android:largeHeap="true"
tag aplikasi manifes Android untuk meminta ukuran tumpukan yang lebih besar, tetapi ini tidak akan berfungsi pada perangkat Honeycomb pra.Sebelum Mengatur HeapSize pastikan Anda telah memasukkan ukuran yang sesuai yang tidak akan memengaruhi fungsionalitas aplikasi atau OS lainnya. Sebelum pengaturan, periksa berapa ukuran aplikasi Anda & atur ukuran hanya untuk memenuhi pekerjaan Anda. Jangan menggunakan terlalu banyak memori karena aplikasi lain mungkin akan mempengaruhi.
Referensi: http://dwij.co.in/increase-heap-size-of-android-aplikasi
sumber
Dari yang saya ingat Anda bisa menggunakan
VMRuntime
kelas di versi Android awal tetapi sekarang Anda tidak bisa lagi.Saya tidak berpikir membiarkan pengembang memilih ukuran tumpukan di lingkungan seluler dapat dianggap sangat aman. Saya pikir itu lebih mudah bahwa Anda dapat menemukan cara untuk mengubah ukuran tumpukan di perangkat tertentu (bukan pada sisi pemrograman) dengan mencoba memodifikasinya dari aplikasi itu sendiri.
sumber
Meningkatkan Java Heap secara tidak adil memakan kebangkitan ponsel yang defisit. Terkadang cukup untuk hanya menunggu pengumpul sampah dan kemudian melanjutkan operasi Anda setelah ruang tumpukan berkurang. Gunakan metode statis ini .
sumber