Tra*_*ebb 6 javascript java gwt garbage-collection
我正在创建一个新的演示者:
new MyPresenter(new MyView());
Run Code Online (Sandbox Code Playgroud)
它注册了一些事件处理程序并绑定到视图等.最终,我可能会"关闭"该视图,以便浏览器不再呈现它.我没有保持对MyPresenter任何地方的这个实例的引用.
在关于此主题的Google论坛中,传统的响应是"将引用设置为null",然后不要担心它.与Javascript不同,我不能仅仅this = null;因为显而易见的原因而在Java中说.但是在Javascript中,很容易找出我知道将不再使用的对象引用.
我的问题:我如何判断这位演示者是否已被垃圾收集,因为我没有保留对它的引用?它显然存在.我是否应该相信GWT和JS将会解决这个问题?或者我是否需要保持自己的引用,MyPresenter以便null在完成后可以手动执行它?
内存泄漏有两种情况:
DOM/浏览器级别的内存泄漏通常会在您关闭应用程序后持续存在。据我所知,只有旧浏览器 (IE6) 受到影响,这就是 GWT 使用特殊方式附加处理程序的原因。
对于现代浏览器来说,这应该不是问题,至少如果您关闭应用程序,它们将不是问题。然而,它们可能会成为应用程序内存泄漏。(请参阅此处了解更多详细信息)。但总的来说,现代 Javascript GC 在释放未使用的内存方面非常好。
对于长时间运行的应用程序以及当您动态创建大量视图/演示者并通过事件处理程序保留引用时,应用程序内存泄漏可能是一个问题。但这实际上取决于涉及各方的范围。
这篇文章是一个很好的参考,其中包含更多相关信息。
最后,为了确保您确实没有任何应用程序内存泄漏,您应该使用开发工具堆分析器来检查较长时期内的内存消耗。
这篇博文有更多相关信息。