5

我有一个在 Firefox 中运行良好的应用程序,但是当我在 IE8 中进行测试时,出现了一个奇怪的错误:'Stack overflow at line: 0'

在 GWT 讨论组建议它可能与从 RPC 调用返回的大型/复杂对象有关之后,我能够将问题缩小到我的一个 RPC 服务器调用,它确实返回了一个大型、复杂的对象。

如果错误确实是由于大型对象太大或太复杂,我怎么知道?“过大”的门槛在哪里?

GWT 讨论的进一步评论表明 Collections 对象可能是问题所在,但这是来自另一位 GWT 开发人员的经验。GWT 文档或团队是否在任何地方记录了这一点?

但即便如此,问题仍然存在——我怎么知道它什么时候“足够小”?

4

3 回答 3

0

我仍然不知道是否有关于对象大小的指定问题的答案,但我的问题最终是因为我在返回的对象中有对其他对象的递归引用。嗯,不是显式递归的,而是对象 A 对对象 B 的引用,对象 B 引用了对象 A 等等。它是一个家谱结构,因此每个个体都有关系图,其中包含对其他相关个体的引用,这些个体有引用回到相关个人等。在内存中工作正常,引用同一个对象,但显然 GWT 为 IE 生成的 javascript 无法正确反序列化它。

于 2010-11-17T02:16:38.873 回答
0

解决此问题的最佳方法是在编译 GWT 代码时使用 -compileReport 标志,这里有开发人员指南和一些示例:

我在 GWT 1.6.x 和 2.x 的 ant 脚本中使用了它。

PS:不知道您正在使用哪个版本的 GWT,我真的无法提供任何更有用的东西。但是,如果您使用的是 2.1 之前的版本,则可能需要注意——因为它们引入了数据表示小部件,这可能会解决您的对象“太大”的问题。

于 2010-12-02T15:46:27.190 回答
0

加载我的 GWT 页面时,我也收到了“第 0 行的堆栈溢出”。最后,在我的情况下,该应用程序仅在使用包括 ?gwt.codesvr=127.0.0.1:9997 片段的 Eclipse 调试模式 url 时才抱怨。在 URL 中删除该片段后,错误消失了。

于 2013-09-26T15:21:47.613 回答