Groovy和Grails中的方法代码太大?

xesrikrc  于 6个月前  发布在  其他
关注(0)|答案(2)|浏览(131)
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文件大小是149 k。当我注解或删除4-5行代码,它将运行没有错误!

cqoc49vn

cqoc49vn1#

Java虚拟机有一个限制,方法不能大于64k(65536字节)。这个post详细描述了这个限制。
克服这个问题的最好方法是简单地将大型方法拆分为较小的方法,这通常是一个很好的实践。
还要注意的是,JVM JIT编译器不会编译大于8K的方法。但是,您可以使用-XX:-DontCompileHugeMethods选项更改此行为。

llycmphe

llycmphe2#

**问题:**Jenkins管道中出现以下异常错误:org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during class generation: Method code too large! java.lang.RuntimeException: Method code too large!
说明:根本原因与单个方法的64 kB字节码限制有关。Java虚拟机对类有隐式限制,根据性能和语言限制,这些限制是强制性的,并受到限制-例如:帧中操作数堆栈的大小,字段和方法名称的长度,在类中可以声明许多方法等.你可以按照Oracle JVM文档中的“检查列表”进行操作。
解决方案:为了解决这个问题,只需将类方法分离到共享库库或子内部/外部类(例如Utils.Groovy)中,并将该库导入主类中。通常,代码应该可读,精简和高级。如果太长,则使用面向对象架构导出功能,您将获得可读和可维护的代码。

相关问题