我知道java中方法的最大大小是64k。如果它超过了,我们将收到编译器警告,例如“Code to large to compile”。所以我们可以用这么少的内存来称之为java的缺点。
我们可以增加这个尺寸限制还是真的可以增加?
关于此方法大小的更多想法?
答案 0 :(得分:37)
根据我的经验,64KB限制只是生成代码的问题。 ESP。在对大型数组进行实体化时(在代码中完成)
在结构良好的代码中,每个方法都是可管理的长度,并且远小于此限制。可以从非Java文件(如文本或二进制文件)中读取要加载到数组中的大量数据。
编辑:
JIT不会编译大于8 K的方法,这是值得的。这意味着代码运行速度较慢并且可能影响GC时间(因为使用以下方法搜索线程的调用堆栈效率较低)没编译esp大的)
如果可能,您希望将方法限制为8 K而不是64 K.
答案 1 :(得分:7)
64k非常多,如果你超过它,你可能会考虑重新组织你的代码。
在我的项目中,我在生成的源中遇到过一次约束。只需将一种方法分成几种即可解决。
答案 2 :(得分:4)
如果您的方法超过50行(包括内部注释) - 将其拆分。在这种情况下,您永远不会达到任何限制(即使存在一个限制)。
我亲眼看到了1000行长的方法(由自称为程序员的犯罪分子编写):)但是没有看到这种限制。