揭开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的限制。

关注测者,关注测试

转载于:https://www.cnblogs.com/mrtester/p/10107989.html

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

  1. 测者的测试技术手册:AI的自动化单元测试

    测者的测试技术手册:AI的自动化单元测试 谈新技术:AI的自动化单元测试 转载于:https://www.cnblogs.com/mrtester/p/10107939.html

  2. 测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法...

    2019独角兽企业重金招聘Python工程师标准>>> 今天遇见了一个奇怪的问题,在IDE中run unit test,全部cases都成功了,但是后来通过mvn test运行cas ...

  3. 测者的测试技术手册:智能化测试框架EvoSuite的一个坑以及填坑方法

    自动的自动化:智能化测试框架EvoSuite的一个TooManyResourceException处理方法 问题 最近在不断地学习和探索EvoSuite框架的时候,在生产JUnit单元测试框架后,出现 ...

  4. 【技术手册】Java 开发者必备手册《Spring Cloud Alibaba 从入门到实战》

    Java 开发者必备手册<Spring Cloud Alibaba 从入门到实战> 简介 大咖寄语 目录 精彩导读 基础知识篇 分布式配置 服务注册与发现 分布式服务调用 服务熔断和限流 ...

  5. 测者的测试技术笔记:Screenplay 模式(Journey 模式)

    Screenplay模式 Junit的Screenplay 举例 Actor theReceptionist =newActor().with(WebBrowsing.ability()) theRe ...

  6. 测试技术大牛谈成长经历:一个好的软件测试工程师应该做到这些!

    我们在变化中成长.假设你拒尽了变化,你就拒尽了新的美丽和新的机遇. 初始软件测试 "这是一个杯子,主要用来喝水的,它的质量应该如何考量?" 这是在进入上家公司面试时,测试主管问我的 ...

  7. 深入浅出解读 Java 虚拟机的差别测试技术

    为什么80%的码农都做不了架构师?>>>    本文分享基于字节码种子生成有效.可执行的字节码文件变种,并用于 JVM 实现的差别测试.本文特别提出用于修改字节码语法的classfu ...

  8. 渗透测试-红/蓝队Hvv技术手册/面试

    红/蓝队Hvv技术手册/面试 介绍一下自己,喜欢研究的,实战过的项目,得过奖项的感悟. 经常关注的安全平台 基本功 网络协议(HTTP.TCP) 操作系统命令 底层编程开发(应用框架) 加密解密编码 ...

  9. 领测软件测试网42期(北京站)测试技术沙龙圆满成功

    2013年1月12日,元旦刚过,领测软件测试网(http://www.ltesting.net/),在微软亚洲研究院南楼(一号楼)举行了13年首场软件测试技术沙龙. 会议13:30举行,最早的软件测试 ...

最新文章

  1. 微信小程序之上传附件
  2. 淘宝旺铺基础版装修出专业版效果(不花钱也一样做到)
  3. balanced binary search tree
  4. linux 下mysql命令 (授权用户 和 基本操作)
  5. egg前面加什么_跟 egg 有关的英语多半是贬义,goose egg 也八九不离十
  6. python怎样导出py文件_导出python模块(到字符串或py文件)
  7. linux bash 和 sh的区别
  8. python单位根检验看结果_Python ADF 单位根检验 如何查看结果的实现
  9. android jni ——Field Method -- Accessing Field
  10. java 中类型后面三个点的用法
  11. 基于Caffe的人脸关键点检测实现
  12. Win7(64Bit) 安装 PL/SQL Developer图解
  13. linux使用中的问题 --- (防火墙iptables -F)
  14. SSM公司企业绩效考核管理系统
  15. 大学计算机构成课程论文,大学计算机课程论文
  16. 南部龙凤小学:六一文艺表演
  17. 如何屏蔽电脑微信自动更新
  18. cygwin使用apt-cyg
  19. Beautiful爬取海词网词汇意思和短语
  20. 男女之间没有真正的友谊

热门文章

  1. Transformation HDU - 6726(百度之星复赛2019 dfs)
  2. django ajax 更新表格_Django(反向解析,路由分发、名称空间、视图层、虚拟环境、Django版本、json,CBV)...
  3. phpcms 加载php文件,PHPCMS配置文件的读取
  4. linux脚本变量运算符,linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)...
  5. anaconda写python代码视频_如何安装Python运行环境Anaconda?(视频教程)
  6. matlab png转02,matlab把图片pgm格式转换成png格式
  7. java api 测试工具_Java 实现在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具
  8. vba循环通过键盘某个按键按下退出循环_51单片机按键检测--独立按键与矩阵键盘...
  9. 『ACM-算法-lowbit』算法竞赛进阶指南--lowbit运算,找到二进制下所有是1的位
  10. TVS管(瞬态电压抑制二极管)好坏 简单检测方法