Safari IPad页面刷新后内存泄漏问题

Safari IPad页面刷新后内存泄漏问题,ipad,jquery-mobile,knockout.js,memory-leaks,safari,Ipad,Jquery Mobile,Knockout.js,Memory Leaks,Safari,这个问题更像是一个理智的检查,我无法从逻辑上解释这是如何发生的。 我有一个结合使用WebSQL、knockout.js和Jquery移动用户界面的应用程序。它的内存很重,并且确实存在内存泄漏(knockout.js和jquery Mobile Ajax navigation并不配合得很好),以至于在IPad上使用30分钟后,Safari应用程序崩溃。在截止日期之前没有足够的时间来正确地修复它(不要评判我),所以我们认为我们不会通过设置$.mobile.ajaxEnabled=false来进行aj

这个问题更像是一个理智的检查,我无法从逻辑上解释这是如何发生的。
我有一个结合使用WebSQL、knockout.js和Jquery移动用户界面的应用程序。它的内存很重,并且确实存在内存泄漏(knockout.js和jquery Mobile Ajax navigation并不配合得很好),以至于在IPad上使用30分钟后,Safari应用程序崩溃。在截止日期之前没有足够的时间来正确地修复它(不要评判我),所以我们认为我们不会通过设置
$.mobile.ajaxEnabled=false来进行ajax导航每n个导航步骤(~5-10),应该终止所有控制对象并释放内存-解决泄漏。我现在观察到的是,即使在刷新应用程序之后,(大概)内存仍在泄漏,因为应用程序在长时间使用后仍在崩溃。

这怎么可能?页面刷新后如何仍保留内存?如何强制释放内存?

确保清除任何不需要的ObservalArray或Observales。也可能是您的观察对象发出了太多的值更改通知。你有没有在桌面版的Chrome上尝试过内存评测?这有助于诊断内存泄漏。撇开截止日期不谈,听起来最好的解决方案是重构,直到修复内存泄漏。我可能完全误解了你的意思,但JQM会缓存以前的页面。因此,JQM缓存中可能有一些剩余的页面。您是否在每次导航到新页面时都尝试从DOM中清除上一页?因此,仅仅为了调试目的而对自己进行整理?这也比ajax遍历然后清除缓存更有效。当然,您将丢失任何ajax转换,并且可能需要重新考虑JS/JQuery&JQM事件的其他一些元素。@LIUFA正如Omar所说,使用“$.mobile.ajaxEnabled=false;”没有明确地直接加载页面。它只是说不要使用ajax。但这取决于您的事件以及您使用它的方式和地点,可能不会产生任何影响。最好尝试我建议的一种方法,或者通过ajax加载页面,进行ajax转换,然后刷新页面。虽然这可能只是掩盖了真正的问题。禁用ajax的单页面模型,所有页面都是通过HTTP加载的。这就像正常浏览一个网站。