相信,不少人都不知道Java的Method的上限为64K。本文将超过这个上限的函数叫作巨型函数。java
一、若是代码超过了这个限制,Java编译器就报"Code too large to complier"的错误。 二、代码并无超过64K的限制,可是在运行时因为其余工具或者library使得对应的代码超过了64K的限制,那么Java会给咱们一个java.lang.VerifyError的错误。算法
以下一些仅仅是一些可能致使出现巨型函数的常见状况,还有不少其余状况就不一一列举了。数组
不少大函数并非人手动写出来的,是一些代码生成工具生成的,例如ANTLR(ANother Tool for language Recognition)就有可能生成巨大的Method。函数
Initialization方法就很容易变成巨型函数,尤为是一些GUI的初始化函数,很容易在一个代码段中塞进去不少对应的GUI的布局定义代码和attaching listener代码,致使巨型函数的产生。工具
测者在工做中也碰见过static final 数组编译器使用load或者sotre的指令初始化数组。这有时候也会致使出现巨型函数。布局
不少JSP的编译器也会将全部的JSP代码编译到一个函数中,致使巨型函数的出现。测试
最好也是最根本的解决巨型函数的方法就是拆分。不管是代码生成工具仍是JSP都容许咱们进行代码的拆分。可是其余一些例如调用第三方工具或者library致使的这个问题,不少时候就不能经过粗暴的代码拆分解决问题了,须要从新设计,优化算法等方式避免巨型函数的出现。也有不少时候咱们没有办法避免巨型函数的64K限制,咱们最终的根本方法仍是寄但愿于Java自身接触64K的限制。优化