java.lang.OutOfMemoryError. Consider increasing the value of $(JavaMaximumHeapSize). Java ran out of memory while executing 'java.exe'
I am getting out of memory exception in my visualstudio Xamarin Project Please help me how can i resolve this issue.
答案 0 :(得分:116)
I would increase your build heap size.
Right click your Android Project > Properties > Android Options > Advanced > Java Max Heap Size.
答案 1 :(得分:17)
答案 2 :(得分:16)
If you want to increase Heap size of your application (not the build process) you can set this in your AndroidManifest.xml:
<application android:largeHeap="true"></application>
答案 3 :(得分:12)
对于visual studio 2015,右键单击Project - &gt;属性 - &gt; Android选项 - &gt;那里的高级和堆大小。
答案 4 :(得分:3)
当用完1G堆大小时,开始优化资源。
首先检查您是否没有复制图像实例,将相同图像保留在内存中多次。为此,使用ffimageloading库(https://github.com/luberda-molinet/FFImageLoading)快速轻松地获取它。
然后优化您正在使用的图像。对于除图标之外的大图像,尝试将所有内容转换为jpeg,避免使用透明度的png,这一直是为了保持我的恒定ooms。
如果您在遥控器上有大量上传的图像,请尝试使用缩略图代替图像。在您的服务器上预先创建不同大小的缩略图,迷你,小,中,普通,大,xlarge等,并只加载您真正需要的大小的图像。这节省了大量的内存和速度。
另一个是内存泄漏。如果单元格或其他元素没有取消订阅消息,事件处理程序和其他元素,则可能会将单元格或其他元素保留在内存中。想象一下,当你确定无法发生时,你可以拥有一份完整的图像列表的几份副本。更多信息:
https://forums.xamarin.com/discussion/123876/should-we-unsubscribe-all-events-for-memory-management
答案 5 :(得分:1)
以我的经验,内存问题仅发生在Xamarin.Forms应用的android版本上。而且它总是必须处理大尺寸图像。我已经通过使用FFImageLoading(https://github.com/luberda-molinet/FFImageLoading)
处理了这个问题替换您的
<Image Source="waterfront.jpg" />
使用
<ffimageloading:CachedImage Source="waterfront.jpg"
DownsampleToViewSize = true,
BitmapOptimizations = true/>
您将看到性能上的显着提高,这还将解决您的内存问题。
答案 6 :(得分:0)
答案 7 :(得分:0)
我已修复以下在AndroidManifiedt.xml的应用程序标记中添加
<application android:largeHeap="true" android:label="sample"></application>