【发布时间】:2013-01-02 00:28:24
【问题描述】:
我有大约 55 个 Java 接口和 5 个抽象类。每个声明都使用相同的泛型参数集:它列出了大约 60 个声明,因此每个实现都知道彼此实现的特定类型,并在方法参数中替换此类型并根据需要返回。似乎这种(可能过度)使用泛型导致编译器挂起。编译器抛出 OutOfMemoryError,但似乎没有终止。
考虑到我的情况,包含其中一个声明的代码清单有点困难,但清单的一部分可能是可能的。接口声明通常指定大约五个方法的集合,但在声明中使用泛型会将源模块的大小增加到大约一千行。
我的情况可能是编译器实际上进入无限循环的情况,还是应该给它更多内存?抛出 OutOfMemoryError 异常大约需要 20 分钟,所以我担心如果我只是将分配给编译器的内存增加一个因子,编译器抛出异常的时间会更长。
我使用 NetBeans 作为我的编辑器环境,但我一启动 NetBeans 就求助于运行 clean/build 脚本。我这样做是因为 NetBeans 在启动后开始检查我的代码语法时很快变得无响应。我正在使用 Ubuntu 10.4(我想 - 我是从 Windows 写的)。我求助于在 Ubuntu 环境中打开命令行,将 NetBeans 作为后台进程运行,检查输出并使用 gedit 更正任何源代码错误,杀死并重新启动 NetBeans。这似乎就足够了,直到我发现不再产生语法错误。我不知道如何从命令行运行 clean/build 脚本。
对不起,如果这个问题看起来含糊不清,但如果其他人可以帮助我,那么也许我可以更具体一点。
感谢任何深思熟虑的建议。
【问题讨论】:
-
源文件有多少?
-
不管这是否挂了编译器,这听起来很可怕。
-
很抱歉,我无法想象您在描述什么。您能否提供一个展示您的技术的精简清单(因为没有更好的词)?也许是单字母类名?
-
尽量给编译器更多内存!
-
您能否发布指向这些声明之一的 sn-p 的链接?老实说,我只是想傻眼。
标签: java generics compilation freeze