2010-06-20 6 views
5

Je suis actuellement en train d'envisager de développer une application pour le traitement des images capturés par l'appareil photo de téléphones mobiles en utilisant le système d'exploitation Android. Avant de prendre la décision d'aller de l'avant, j'ai fait quelques recherches et trouvé il y a quelques plaintes concernant les limites de la mémoire alloués par le VM Dalvik, qui semblent être limitant aux applications qui nécessitent la manipulation et le traitement de images. Quelles limites devrais-je avoir en tête si je devais traiter pour exemple 3 photos prises avec l'appareil photo, dans mon processus, en appliquant filtres, transformations et d'autres types d'opérations mathématiques?Dalvik Memory Allocation - Comment changer les limites par défaut?

Je voudrais savoir s'il est possible de changer la valeur par défaut de mémoire allouée par la machine virtuelle Dalvik pour chaque application (cette valeur par défaut est de 16 Mo), de quelque manière, en utilisant le système d'exploitation Android 1.6. Quelqu'un at-il l'air dans ce qui peut m'aider s'il vous plaît?

J'ai aussi lu dans la définition de compatibilité Android 2.1 Document (disponible ici: http://static.googleusercontent.com/external_content/untrusted_dlcp/source.android.com/pt-PT//compatibility/android-2.1-cdd.pdf ) qu'il est possible de modifier la répartition de la mémoire par le Dalvik VM de 16 Mo à 24 Mo ou même un plus grand montant si cela est nécessaire, mais il n'est pas mentionné nulle part comment cela peut être fait.

Si quelqu'un a déjà examiné ces questions et pourrait me donner quelques conseils ou aide, il serait grandement apprécié. Merci.

+0

BTW: le Nexus One la taille du segment par défaut est déjà à 24 Mo par application –

Répondre

7

Sur un périphérique habituel, vous ne pouvez pas modifier les limites de tas de votre application. Ils sont codés en dur par l'OEM. Si vous développez pour un périphérique dont vous avez le contrôle total, vous pouvez modifier les scripts de démarrage de Dalvik pour permettre plus d'espace de tas.

+0

Avez-vous des informations sur la façon de modifier les scripts de démarrage de Dalvik concernant une taille de tas par défaut plus élevée par application? Est-ce que le téléphone doit être enraciné pour cela? Je développe une application qui sera regroupée/distribuée avec un appareil, où je serais en plein contrôle, pas encore enraciné (encore). –

+2

vous devez avoir un accès complet au téléphone, la modification des scripts de démarrage signifie une acces root. si vous avez un accès root - éditez le script init (il est dans root/init.rc) et rechercher "setprop ro.FOREGROUND_APP_MEM 1536" – reflog

+4

Pour la limite de segment géré de Dalvik, vous souhaitez modifier le fournisseur/[société]/[produit] /system.prop et ajouter ou mettre à jour "dalvik.vm.heapsize = 24m ". Cela finit dans /system/build.prop et finit par devenir un argument -Xmx. – fadden

2

Vous pouvez changer cela en changeant l'élément vm.heapSize dans le fichier config.ini d'avd. Par exemple, vous pouvez écrire

vm.heapSize=64 

dans config.ini. S'il n'y a pas un tel article, vous pouvez en ajouter un nouveau.

Cependant, veuillez noter que vm.heapSize peut être remplacé par la peau. Il y a un hardware.ini dans le chemin de la peau, et il contient les paramètres par défaut vm.heapSize et hw.ramSize qui peuvent remplacer votre valeur. Pour résoudre ce problème, vous pouvez définir

skin.path=720x1280 
skin.name=720x1280 

Les chiffres ne sont pas importants, il doit être sous la forme (largeur) x (hauteur).

1

Vous pouvez modifier la taille par défaut globale du tas via adb shell setprop, par exemple:

setprop dalvik.vm.heapsize 128m 
Questions connexes