最近,我将开发环境从 Java 6 升级到 Java 8。在编译期间(超过 4,000 个源文件),我在使用 Java 8 编译时遇到了 OutOfMemory 错误。为了解决这个问题,我不得不增加我的 ANT javac 任务memoryMaximumSize 属性值从 512m 到 1024m。
在使用任务管理器检查流程时,我可以看到为什么需要上述更改。编译进程内存利用率从大约 480 MB 增加到大约 960 MB。我有点犹豫是否盲目地实施这个改变。所以,我想知道:
为什么这个改变是必要的?
使用更多内存的 Java 8 编译器是否发生了变化?
是不是旧的 ANTLR 在与 Java 8 一起使用时效率低下?(这是我相信的)
我的环境:
- Java 8u66(32 位)
- 视窗 8
- 日食火星(32 位)
- ANTLR 2.7.7
如果您想知道为什么是 32 位,我们有一些 32 位的旧版 DLL(目前)无法替换。