测者的测试技术手册:揭开java method的一个秘密--巨型函数

栏目: Java · 发布时间: 6年前

内容简介:相信,很多人都不知道Java的Method的上限为1、如果代码超过了这个限制,Java编译器就报"Code too large to complier"的错误。 2、代码并没有超过64K的限制,但是在运行时由于其他工具或者library使得对应的代码超过了64K的限制,那么Java会给我们一个java.lang.VerifyError的错误。如下一些仅仅是一些可能导致出现巨型函数的常见情况,还有很多其他情况就不一一列举了。

揭开java method的一个秘密:巨型函数

相信,很多人都不知道 Java 的Method的上限为 64K 。本文将超过这个上限的函数叫做巨型函数。

巨型函数的问题

1、如果代码超过了这个限制,Java编译器就报"Code too large to complier"的错误。 2、代码并没有超过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代码编译到一个函数中,导致巨型函数的出现。

如何解决巨型函数的问题

最好也是最根本的解决巨型函数的方法就是拆分。无论是代码生成工具还是JSP都允许我们进行代码的拆分。但是其他一些例如调用第三方工具或者library导致的这个问题,很多时候就不能通过粗暴的代码拆分解决问题了,需要重新设计,优化算法等方式避免巨型函数的出现。也有很多时候我们没有办法避免巨型函数的64K限制,我们最终的根本方法还是寄希望于Java自身接触64K的限制。

关注测者,关注测试


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

单元测试之道Java版

单元测试之道Java版

David Thomas、Andrew Hunt / 陈伟柱、陶文 / 电子工业 / 2005-1 / 25.00元

程序员修炼三部曲丛书包含了四本书,介绍了每个注重实效的程序员和成功团队所必备的一些工具。 注重实效的程序员都会利用反馈来指导开发,并驱动个人的开发流程。编码的时候,最有用的反馈来自于“单元测试”。 为了测试一座桥梁,不会只在晴朗的天气,开一辆汽车从桥中间穿过,就认为已经完成了对桥梁的测试。然而许多程序员却正在使用这种测试方法——把这种一次顺利通过称为“测试”。事实上,注重实效的程序员应......一起来看看 《单元测试之道Java版》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具