任何人都可以解释在开发模式和实时模式下使用 GWT 时发生内存泄漏的可能方法吗?
我参考以下问题
如在答案之一中找到以下链接..
https://developers.google.com/web-toolkit/articles/dom_events_memory_leaks_and_you
它们主要处理 Widget 创建和浏览器事件。是否有任何其他可能的块孔发生内存泄漏,例如在执行 RPC 时 .. 使用很多渲染方法 ..etc 等?
任何人都可以解释在开发模式和实时模式下使用 GWT 时发生内存泄漏的可能方法吗?
我参考以下问题
如在答案之一中找到以下链接..
https://developers.google.com/web-toolkit/articles/dom_events_memory_leaks_and_you
它们主要处理 Widget 创建和浏览器事件。是否有任何其他可能的块孔发生内存泄漏,例如在执行 RPC 时 .. 使用很多渲染方法 ..etc 等?
您列出的链接讨论了 GWT 如何避免浏览器众所周知的内存泄漏类型 - 任何地方都没有引用 dom 元素或小部件的情况,但浏览器仍然不会将其从内存中释放。您需要注意的唯一情况是当您创建自己的包含其他小部件的小部件时 - 在这种情况下,您需要小心调用每个孩子的附加和分离方法。坚持使用已知良好的容器和面板将完全避免您这样做,并且永远不会直接调用附加或分离方法。
除此之外,内存泄漏就像所有其他类型的开发一样 - 我们需要小心保留您不再使用的东西的引用。我不同意链接问题中的一些答案——Java 内存泄漏工具不能很好地帮助通过开发模式跟踪这些对象,因为它们考虑的是 JVM 和 Java 对象,而不是浏览器和 JavaScript。
相反,将样式设置为 PRETTY 进行编译,并使用 Chrome 的 Inspector 之类的工具。这可以用来查看正在消耗内存的对象,并判断是什么在占用它们。该策略与任何其他堆分析工具(JProfiler、VisualVM 等)相同。并且适用于编写代码的标准规则 - 如果您持有一个不需要的对象,请将其清空或从持有它的集合中删除它。显然,如果您仍然需要它,请保留它-相反,更高的东西应该放手它。