Groovy &Grails中方法代码太大?

问题描述 投票:7回答:2
2014-06-17 11:22:18,622 [Thread-11] ERROR compiler.GrailsProjectWatcher  - Compilation Error: startup failed:
General error during class generation: Method code too large!

有什么解决办法?只有4-5行代码隐藏和重启后完全运行成功,bootStrap文件大小是149k。当我注释或删除4-5行代码时,就会无误运行!请问是什么原因?

grails groovy jvm
2个回答
11
投票

Java虚拟机有一个 限制 方法不能大于64k(65536字节)。这个 岗位 详细描述了这个限制。克服这个问题的最好方法是简单地将你的大方法拆成小方法,这通常是一个好的做法。

另外,请注意JVM JIT编译器不会编译大于8K的方法。不过你可以使用 -XX:-DontCompileHugeMethods。 选项。


0
投票

的问题。 刚刚在Jenkins管道中得到以下异常错误。org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during class generation: Method code too large! java.lang.RuntimeException: Method code too large!

解释 : 根本原因与单个方法的64kB字节代码限制有关。Java虚拟机对类有隐含的限制,根据性能和语言的限制,这些限制是必须遵守和限制的,例如:操作数栈在框架中的大小,字段和方法名称的长度,方法的数量可以在类中声明等......你可以按照这个 "检查列表 "在 Oracle JVM文档. 你得到了 此方案的方法大小限制.

解决办法: 为了解决这个问题,只需将类方法分离到共享lib库或子内部外部类中(如 Utils.Groovy 例如)并在你的主类中导入该库。一般来说,一个代码应该是可读的,精益的和高水平的。如果它太长,导出的功能使用面向对象的架构,你将获得可读和可维护的代码。

© www.soinside.com 2019 - 2024. All rights reserved.