Obtenir OutOfMemoryException dans Xamarin
java.lang.OutOfMemoryError. Envisagez d'augmenter la valeur de
$(JavaMaximumHeapSize). Java a couru hors de la mémoire lors de l'exécution
'java.exe'
Je suis sortir de mémoire exception dans mon visualstudio Xamarin Projet s'il vous Plaît aider moi comment puis-je résoudre ce problème.
- Je tiens à recommander non seulement pour définir LargeHeap de vrai. Au lieu de cela, vous devriez essayer de comprendre ce qui est à l'origine de ce OOM et résoudre ce problème. Sinon, vous pourriez avoir acheté un certain temps jusqu'à ce qu'il va vous frapper de nouveau.
Vous devez vous connecter pour publier un commentaire.
Je voudrais augmenter votre taille de segment de mémoire.
Cliquez-droit sur votre Projet Android > Propriétés > Android Options > Avancé > Java Max de la Taille du Segment.
android:largeHeap="true"
balise, puis de regarder votrelogcat
pourGrow heap (frag case)
à voir quand l'ART est d'essayer d'allouer plus de mémoireLa réponse sélectionnée me conduire dans la bonne direction, mais pour Visual Studio 2017, l'écran ressemble à ceci:
Si vous voulez augmenter la taille du Segment de mémoire de votre application (et non le processus de construction) vous pouvez le faire dans votre AndroidManifest.xml:
Pour visual studio 2015 à droite, cliquez sur Projet --> Propriétés - > Android Options --> Avancé et de la taille du segment de là.
De Xamarin studio version 6.3 et visual studio 7.0.1 l'option pour augmenter la taille du segment de mémoire peut être trouvé ici
Clic droit sur le projet android puis choisissez options et de choisir, en Construire/Android Construire, puis Avancé onglet et de définir 1G (ou quelque chose) en Java heap size
Lorsque vous exécutez hors de 1G taille de tas, de commencer à optimiser les ressources.
Vérifiez d'abord si vous n'êtes pas dupliquer les images instances, en gardant la même image dans la mémoire à plusieurs reprises. Pour que l'utilisation ffimageloading bibliothèque (https://github.com/luberda-molinet/FFImageLoading) obtenir sur nuget rapide et facile.
Puis d'optimiser les images que vous utilisez. Pour les grandes images, autres que les icônes, essayez de convertir tout format jpeg en évitant les png avec de la transparence, qui une fois m'a sauvé de la constante ooms.
Puis essayez à l'aide de vignettes à la place des images lorsque vous pourriez avoir de grandes images téléchargées sur la télécommande. Sur votre serveur de pré-créer des vignettes pour les différentes tailles, mini -, petit, moyen, normal , large, xlarge, etc, et de charger des images que de taille dont vous avez vraiment besoin. Qui permet de gagner beaucoup de mémoire et de la vitesse.
Une autre qui est des fuites de mémoire. Vous pourriez avoir des cellules ou d'autres éléments encore résider im mémoire si ils n'avaient pas de vous désabonner des messages, gestionnaires d'événements et de quelques autres. Imaginez que vous pourrait avoir plusieurs copies d'une liste complète des images dans la mémoire lorsque vous êtes sûr que ça ne peut pas arriver. Plus d'infos ici:
https://forums.xamarin.com/discussion/123876/should-we-unsubscribe-all-events-for-memory-management
https://forums.xamarin.com/discussion/87206/messaging-center-unsubscribe-from-all-messages-when-broadcast-stops
Dans mon expérience, les problèmes de mémoire se produisent SEULEMENT sur la version android de l'Xamarin.Les formulaires d'application. Et toujours les avoir à traiter avec de grandes images en taille. J'ai résolu ce problème en utilisant FFImageLoading(https://github.com/luberda-molinet/FFImageLoading)
Remplacer votre
Avec
Vous verrez une drastique des améliorations de la performance, et il permettra également de résoudre vos problèmes de mémoire.
L'augmentation de java max taille de segment de mémoire fonctionne pour moi
J'avais fixé l'ajout ci-dessous dans la balise application de AndroidManifiest.xml