大佬教程收集整理的这篇文章主要介绍了xamarin.ios – 为什么这段代码会破坏iOS应用程序的“Out of Memory”?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一个想法是GC无法跟上,但Thread.Sleep()的延迟有多大并不重要 – 最终,内存将消失.
测试看起来可能是学术性的,但我遇到了一个崩溃的真实应用程序的问题.它有一个方法从Webservice请求中获取(巨大的)字符串,将该字符串转换为XmlDocument并解析它(将某些内容存储到DB).然后该方法退出但内存保持高位.如果我再次执行相同的方法(一小时后左右!),应用程序将死OOm.为什么仍然分配内存?
@H_607_14@public override bool FinishedLaunching ( UIApplication app,NSDictionary options ) { Thread oThread = new Thread ( DoIt ); oThread.Start ( ); return true; } public void DoIt () { using(var o = new NSAutoreleasePool()) { while(true) { StringBuilder oSB = new StringBuilder(); for(int i = 0; i < 800000; ++i) { oSB.Append("1234567890"); } oSB = null; Thread.Sleep(1000); } } }
编辑:我注意到如果我改变Do()方法如下所示,内存保持稳定.它上升了一段时间,然后GC开始并清理它.如果我在创建NSString对象后添加s.Dispose(),内存根本就不会上升.
所以它似乎是.NET字符串类的问题.
@H_607_14@public void DoIt () { using(var o = new NSAutoreleasePool()) { StringBuilder oSB = new StringBuilder(); for(int i = 0; i < 800000; ++i) { oSB.Append("1234567890"); } while(true) { NSString s = new NSString(oSB.ToString()); Thread.Sleep(1000); } } }
以上是大佬教程为你收集整理的xamarin.ios – 为什么这段代码会破坏iOS应用程序的“Out of Memory”?全部内容,希望文章能够帮你解决xamarin.ios – 为什么这段代码会破坏iOS应用程序的“Out of Memory”?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。