HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了xamarin.ios – MonoTouch垃圾如何收集?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_944_4@ 是否在任何地方发布了MonoTouch垃圾收集的详细信息?我很想知道它在iPhone上是如何工作的.我想知道:
>它运行的频率,是否存在可能阻止其运行的任何约束.
>它是否完全是线程安全的,因此从一个线程传递到另一个线程的对象被正确处理,如果存在我们应该注意的约束.
>如果在启动将使用内存的操作之前手动调用垃圾收集器有任何好处.
>它如何处理低内存通知和内存不足.

这些信息将帮助我们理解应用程序日志中的堆栈和线程信息.

[编辑]我现在已经在Hans Boehm’s站点找到了这些信息,但这非常通用,列出了实现者的各种选项和选择,包括如何处理线程.具体的MonoTouch信息是我想要的.

解决方法

垃圾收集器与Mono中使用的垃圾收集器相同,源代码如下:

https://github.com/mono/mono/tree/master/libgc

它是完全线程安全的,并且是多核安全的,这意味着多个线程可以分配对象,并且它可以在存在多个线程时进行垃圾收集.

这么说,你的问题有点棘手,因为当你说“所以从一个线程传递到另一个线程的对象是处理属性时,你是不是真的在询问垃圾收集器,如果存在一个应该注意的约束” .

这不是一个垃圾收集器问题,而是一个API问题.这在很大程度上取决于您所调用的API.规则与.NET相同:实例方法永远不是线程安全的,静态方法认是线程安全的.除非在API中明确说明它们不是.

现在使用UIKit或CoreGraphics等UI API,它们与世界上任何其他GUI工具包都没有什么不同. UI工具包不是线程安全的,因此您不能假设可以安全地从线程访问在主线程上创建的UILabel.这就是为什么你必须在NSObject上调用“BeginInvokeOnMainThread”以确保你在UIKit对象上调用的任何方法都只执行主线程.

这只是一个例子.

有关更多信息,请查看http://monotouch.net/Documentation/Threading

低内存通知由操作系统提供给您的UIViewControllers,而不是Mono的GC,因此您需要在这些情况下采取适当的措施.

大佬总结

以上是大佬教程为你收集整理的xamarin.ios – MonoTouch垃圾如何收集?全部内容,希望文章能够帮你解决xamarin.ios – MonoTouch垃圾如何收集?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。