OutOfMemoryException krijgen in Xamarin

java.lang.OutOfMemoryError. Overweeg de waarde van te verhogen
$(JavaMaximumHeapSize). Java had onvoldoende geheugen tijdens het uitvoeren
‘java.exe’

Ik krijg geen geheugenuitzondering meer in mijn visualstudio Xamarin Project Help me hoe ik dit probleem kan oplossen.


Antwoord 1, autoriteit 100%

Ik zou je bouwheap vergroten.

Klik met de rechtermuisknop op uw Android-project > Eigenschappen> Android-opties> Geavanceerd> Java maximale heapgrootte.

voer hier de afbeeldingsbeschrijving in


Antwoord 2, autoriteit 17%

Het geselecteerde antwoord leidde me in de goede richting, maar voor Visual Studio 2017 ziet het scherm er als volgt uit:

VS 2017 bijgewerkte schermen

VS 2017 bijgewerkte schermen


Antwoord 3, autoriteit 14%

Als u de heap-grootte van uw applicatie wilt vergroten (niet het bouwproces), kunt u dit instellen in uw AndroidManifest.xml:

<application android:largeHeap="true"></application>

Antwoord 4, autoriteit 10%

Voor visual studio 2015 klik met de rechtermuisknop op Project –> Eigenschappen –> Android-opties –> Geavanceerd en hoopgrootte daar.


Antwoord 5, autoriteit 6%

Vanaf Xamarin studio versie 6.3 en visual studio 7.0.1 is de optie om de heap groter te maken hier te vinden

Klik met de rechtermuisknop op het Android-project en kies vervolgens optiesen kies Build/Android Builden vervolgens Geavanceerdtabblad en stel 1G(of zoiets) in Java heap size

voer hier de afbeeldingsbeschrijving in


Antwoord 6, autoriteit 3%

Als de 1G-heapgrootte op is, begin dan met het optimaliseren van bronnen.

Controleer eerst of u geen instanties van afbeeldingen dupliceert en dezelfde afbeelding meerdere keren in het geheugen bewaart. Gebruik daarvoor de ffimageloading-bibliotheek (https://github.com/luberda-molinet/FFImageLoading) krijg het snel en gemakkelijk op nuget.

Optimaliseer vervolgens de afbeeldingen die u gebruikt. Probeer voor grote afbeeldingen, behalve pictogrammen, alles om te zetten naar jpeg en vermijd png met transparantie, die me ooit voor constante ooms heeft bespaard.

Probeer dan thumbnails te gebruiken in plaats van afbeeldingen als je grote geüploade afbeeldingen op de afstandsbediening hebt. Maak op je server vooraf thumbnails aan voor verschillende formaten, mini, small, medium, normal, large, xlarge etc, en laad alleen afbeeldingen van de grootte die je echt nodig hebt. Dat scheelt veel geheugen en snelheid.

Een andere is geheugenlekken. Het kan zijn dat er nog cellen of andere elementen in het geheugen aanwezig zijn als ze zich niet hebben afgemeld voor berichten, eventhandlers en andere. Stel je voor dat je meerdere exemplaren van een lijst vol afbeeldingen in het geheugen hebt staan ​​terwijl je zeker weet dat dit niet kan gebeuren. Meer info hier:

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


Antwoord 7, autoriteit 2%

Mijn ervaring is dat geheugenproblemen ALLEEN optreden in de Android-versie van de Xamarin.Forms-app. En het heeft altijd te maken met afbeeldingen op groot formaat. Ik heb dit probleem opgelost door FFImageLoading(https://github.com/luberda-molinet/FFImageLoading te gebruiken )

Vervang uw

<Image Source="waterfront.jpg" />

Met

<ffimageloading:CachedImage Source="waterfront.jpg"
DownsampleToViewSize = true,
BitmapOptimizations = true/>

U zult een drastische prestatieverbetering zien, en het zal ook uw geheugenproblemen oplossen.


Antwoord 8

Het vergroten van de maximale heapgrootte van Java werkt voor mij

voer hier de afbeeldingsbeschrijving in


Antwoord 9

Ik had de toevoeging hieronder opgelost in de applicatie-tag van AndroidManifyt.xml

<application  android:largeHeap="true" android:label="sample"></application>

Other episodes