在我的应用程序中使用的可能导致问题的组件包括ReshSharp客户端,.net WebclIEnts,使用位图,带有3个选项卡的TabHost,位置管理器以及通过摄像头拍摄照片.我很难受到这一点的任何帮助,非常感谢.
编辑:
我可能已经缩小了其中一个问题的范围.我在一个tabhost里面有一个摄像机活动来拍照,我有一个照片拍摄方法,在拍摄照片后调用,拍完几张照片后问题就出现了.这是方法
public voID OnPictureTaken(byte[] data,global::AndroID.HarDWare.Camera c) { GC.Collect(); Bitmap b = BitmapExtensions.DecodeBitmapFromArray(data,WIDTH,HEIGHT); Matrix matrix = new Matrix(); matrix.SetRotate(Rotationdegrees,WIDTH / 2f,HEIGHT / 2f); var bitmapScalled = Bitmap.CreateBitmap(b,HEIGHT,matrix,true); var d = global::AndroID.OS.Environment.ExternalStorageDirectory.Path + "/MyApp/"; if (!Directory.Exists(d)) Directory.CreateDirectory(d); file = d + GuID.NewGuID().ToString() + ".jpg"; System.IO.StreamWriter sw = new System.IO.StreamWriter(file); bitmapScalled.Compress(Bitmap.CompressFormat.Jpeg,70,sw.BaseStream); sw.Close(); global::AndroID.Locations.Location location = CameraLocationManager.GetLastKNownLocation(CameraLocationManager.GetBestProvIDer(new Criteria() { Accuracy = Accuracy.Fine },true)); Intent intent = new Intent(this,typeof(EditPhotoActivity)); intent.PutExtra("LastKNownLocation",JsonConvert.SerializeObject(LastKNownLocation)); intent.PutExtra("filename",file); //StartActivity(intent); StartCamera(); // restart camera prevIEw b.Recycle(); b = null; sw.dispose(); bitmapScalled.dispose(); bitmapScalled = null; // clean up GC.Collect(); }解决方法 虽然Xamarin剖析器仍在预览中,但它帮助我了解了我们在应用程序中遇到的内存问题.阅读你的最后评论我可以确认Xamarin Insights(v1.10.1)有一个巨大的内存签名(甚至可能泄漏).在我们从代码中删除它之后 – 该应用程序表现得非常快!
底线 – 使用分析器识别内存问题,如果您的应用中使用了Xamarin Insights,我建议将其删除,直至另行通知为止.
总结以上是内存溢出为你收集整理的Xamarin android内存消耗在使用达到一定阈值后无限增长全部内容,希望文章能够帮你解决Xamarin android内存消耗在使用达到一定阈值后无限增长所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)