Java.lang.OutOfMemoryError。 $(JavaMaximumHeapSize)の値を増やすことを検討してください。 Java 'Java.exe'の実行中にメモリが不足しました
Visualstudio Xamarinプロジェクトでメモリ不足の例外が発生しています。この問題を解決する方法を教えてください。
ビルドプロセスではなく、アプリケーションのヒープサイズを増やしたい場合は、AndroidManifest.xmlでこれを設定できます。
<application Android:largeHeap="true"></application>
Visual Studio 2015の場合は、[プロジェクト]-> [プロパティ]-> [Androidオプション]-> [詳細]および[ヒープサイズ]を右クリックします。
1Gヒープサイズを使い果たしたら、リソースの最適化を開始します。
最初にイメージインスタンスを複製していないかどうかを確認し、同じイメージをメモリに数回保持します。そのためにはffimageloadingライブラリを使用します( https://github.com/luberda-molinet/FFImageLoading )nugetですばやく簡単に入手します。
次に、使用している画像を最適化します。アイコン以外の大きな画像の場合、透過的なpngを避けて、すべてをjpegに変換してみてください。
次に、リモートに大きなアップロード画像がある場合は、画像の代わりにサムネイルを使用してみてください。サーバー上で、ミニ、スモール、ミディアム、ノーマル、ラージ、xラージなどの異なるサイズのサムネイルを事前に作成し、本当に必要なサイズの画像のみをロードします。それは多くのメモリと速度を節約します。
もう1つは、メモリリークです。セルや他の要素がメッセージ、イベントハンドラー、およびその他のサブスクリプションからサブスクライブ解除されなかった場合、メモリー内にまだ存在する可能性があります。起こり得ないと確信しているときに、まだメモリに残っている画像でいっぱいのリストのコピーをいくつか持つことができると想像してください。詳細はこちら:
https://forums.xamarin.com/discussion/123876/should-we-unsubscribe-all-events-for-memory-management
私の経験では、メモリの問題はAndroidバージョンのXamarin.Formsアプリでのみ発生します。そして、常に大きなサイズの画像を処理する必要があります。 FFImageLoading( https://github.com/luberda-molinet/FFImageLoading )を使用してこの問題に対処しました
交換してください
<Image Source="waterfront.jpg" />
と
<ffimageloading:CachedImage Source="waterfront.jpg"
DownsampleToViewSize = true,
BitmapOptimizations = true/>
パフォーマンスが大幅に向上し、メモリの問題も解決します。
AndroidManifiest.xmlのアプリケーションタグに以下を追加するのを修正しました
<application Android:largeHeap="true" Android:label="sample"></application>