如何知道对象是否为';太大';对于GWT和IE8中的RPC?

如何知道对象是否为';太大';对于GWT和IE8中的RPC?,gwt,internet-explorer-8,gwt-rpc,Gwt,Internet Explorer 8,Gwt Rpc,我有一个在Firefox中运行良好的应用程序,但当我在IE8中测试时,我遇到了一个奇怪的错误:“第0行堆栈溢出” GWT讨论组建议它可能与RPC调用返回的大型/复杂对象有关,在此之后,我能够将问题缩小到我的一个RPC服务器调用,它确实返回大型复杂对象 如果错误确实是由于大型对象太大或太复杂造成的,我如何知道这一点?“太大”的阈值在哪里 GWT讨论中的进一步评论表明,集合对象可能是问题所在,但这是另一位GWT开发人员的经验。GWT文档或团队是否在任何地方对此进行了记录 但即便如此,问题依然存在——

我有一个在Firefox中运行良好的应用程序,但当我在IE8中测试时,我遇到了一个奇怪的错误:
“第0行堆栈溢出”

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

如果错误确实是由于大型对象太大或太复杂造成的,我如何知道这一点?“太大”的阈值在哪里

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


但即便如此,问题依然存在——我如何知道它何时“足够小”

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

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

我已经在带有GWT1.6.x和2.x的ant脚本中使用了它


PS:由于不知道您使用的是哪个版本的GWT,我无法提供更有用的东西。但是,如果您使用的是2.1以上的版本,则可能需要注意,因为它们引入了可能会解决“太大”对象问题的功能。

加载GWT页面时,我还遇到了“第0行堆栈溢出”。最后,在我的例子中,应用程序只在使用Eclipse调试模式url时抱怨,其中包括?gwt.codesvr=127.0.0.1:9997代码段。删除URL中的代码片段后,错误消失了。

我们使用的是GWT2.0。感谢您提供有关编译器报告的提示。我只浏览了那一页,但它似乎有很多有用的东西,对未来很有帮助。