簡體   English   中英

沒有StackTrace或日志的Monotouch應用程序崩潰(從不調用析構函數)

[英]Monotouch Application Crashing with no StackTrace or logs (Destructor never called)

我的MonoTouch應用程序不斷崩潰,我不知道該怎么做。 在這一點上,我覺得我已經嘗試了一切。 我有一個RootViewController,它轉換為無數的vewcontrollers。 每次進行傳輸時,我都會在之前的ViewController上手動調用dispose並顯示新的。

感覺就像一個內存泄漏給我,因為應用程序崩潰了大約20-40個ViewControllers並且肯定會在手前變得更加遲鈍。

  1. 如何在設備上查看MonoTouch應用程序的內存使用情況? (不會在模擬器中崩潰)

  2. 任何更多的診斷方法來弄清楚它崩潰的原因?

任何幫助將不勝感激。

更新我已將以下內容添加到我的VC中。

~TargetPromptController(){
    Console.WriteLine("TargetPromptController Released from memory!");
 }

它永遠不會被稱為。

務必處置不需要的對象。 即使單聲道觸摸為你做了一些,我覺得在我的代碼中做到這一點更好。 在循環中的大量例程期間始終強制GC,其中代碼生成大量一次性對象。 PS我不會稱Monotouch不成熟。 平台搖滾!

C#GC類可以為您提供正在使用的內存總量的指示,但是非常不准確且大多數都是錯誤的。 但是,它可以告訴您內存使用量是增加,減少還是穩定。 一般來說,我在做GC.Collect時遇到的問題比我沒有的要多。 所以我的一般建議是不要使用那種方法。

您可以使用此處描述的技術在設備上進行調試。 但是,我遇到了問題,如果您遇到設備調試問題,建議您聯系Monotouch。

您的問題可能是Monotouch將ViewController保留在內存中,盡管您調用了Dispose。 創建一個List類型的屬性,並保存您的VC。 這可以使MonoTouch更容易檢測和收集未使用的VC。 此外,在從集合中釋放VC之前,盡可能地刪除VC內容。 我已經看到Monotouch保留對我已經處理過的父對象的子對象的引用。

總而言之,Monotouch不是一個成熟的產品,您將不得不習慣聯系他們的支持團隊。 在這里發布您的解決方案,以便我們都可以學習! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM