【问题标题】:What are the possible reasons of Memory leaks encounter in GWTGWT中遇到内存泄漏的可能原因有哪些
【发布时间】:2013-01-27 20:16:30
【问题描述】:

谁能解释在开发模式和实时模式下使用 GWT 时可能发生内存泄漏的方法?

我参考以下问题

How to resolve a memory leak in GWT?

在其中一个答案中找到以下链接..

https://developers.google.com/web-toolkit/articles/dom_events_memory_leaks_and_you

它们主要处理 Widget 创建和浏览器事件。是否有任何其他可能的块洞发生内存泄漏,例如在执行 RPC 时 ..使用很多渲染方法 ..etc 等?

【问题讨论】:

    标签: gwt


    【解决方案1】:

    您列出的链接讨论了 GWT 如何避免浏览器众所周知的内存泄漏类型 - 在任何地方都没有引用 dom 元素或小部件的情况,但浏览器仍然不会从内存中释放它。您需要注意的唯一情况是当您创建自己的包含其他小部件的小部件时 - 在这种情况下,您需要小心调用每个子部件的附加和分离方法。坚持使用已知良好的容器和面板可以完全避免这种情况,并且永远不会直接调用附加或分离方法。

    除此之外,内存泄漏就像所有其他类型的开发一样 - 我们需要小心保留您不再使用的东西的引用。我不同意链接问题中的一些答案 - Java 内存泄漏工具不能很好地帮助通过开发模式跟踪这些对象,因为它们考虑的是 JVM 和 Java 对象,而不是浏览器和 JavaScript。

    改为使用设置为 PRETTY 的样式进行编译,并使用 Chrome 的 Inspector 之类的工具。这可以用来查看正在消耗内存的对象,并判断是什么在占用它们。该策略与任何其他堆分析工具(JProfiler、VisualVM 等)相同。并且适用于编写代码的标准规则 - 如果您持有一个不需要的对象,请将其清空或从持有它的集合中删除它。显然,如果您仍然需要它,请保留它 - 而不是更高的东西应该放开那个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 2021-09-16
      相关资源
      最近更新 更多