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

揭开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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端攻略系列(二) - 前端各种面试题

幸运且光荣的被老大安排了一个任务 - “去整理些前端面试题”。年前确实不是招人的好时候,所以我们前端团队经过了超负荷的运转,终于坚持过了春节。春节以后就开始招人啦,这套题考察的目标就是基础基础再基础,嘿嘿。 事先声明&…

html 初识

一、web请求流程模拟 python编写的简易服务器应用程序 import socketserversocket.socket() ip_port (127.0.0.1,8080) server.bind(ip_port) server.listen()while 1:conn, addr server.accept()from_browser_msgconn.recv(1024)print(from_browser_msg)conn.send(bHTTP/1.1 …

Iframe的那些事

在web开发中,经常会用到iframe,难免会碰到需要在父窗口中使用iframe中的元素、或者在iframe框架中使用父窗口的元素 js 在父窗口中获取iframe中的元素 1、 格式:window.frames["iframe的name值"].document.getElementByIdx_x(…

异常处理try...catch...throw

C 引入了异常处理机制。其基本思想是:函数 A 在执行过程中发现异常时可以不加处理,而只是“拋出一个异常”给 A 的调用者,假定为函数 B。 拋出异常而不加处理会导致函数 A 立即中止,在这种情况下,函数 B 可以选择捕获 …

Makefile 中:= ?= += =的区别

是最基本的赋值: 是覆盖之前的值? 是如果没有被赋值过就赋予等号后面的值 是添加等号后面的值转载于:https://www.cnblogs.com/mingyunrangwozoudaoxianzai/p/10118039.html

原生JS写Ajax的请求函数

本文主要介绍了如何通过原生JavaScript封装ajax请求,文中给出了具体的实现代码和详细的解释,希望对你有所帮助。 一、JS原生Ajax ajax:一种请求数据的方式,不需要刷新整个页面; ajax的技术核心是 XMLHttpRequest 对象&…

软件工程--第十三周学习进度

第十三周代码量258 所花时间 6h博客量 2篇了解到的知识点 在寻找“水王”程序编写时,学习了一种新的设计思想,两两删除法,最后剩下的就是水王。这种设计思想,感觉可以用到多种编程,感觉很有意思。转载于:https://www.c…

如何使用 tf object detection

# 如何使用 tf object detectionhttps://juejin.i m/entry/5a7976166fb9a06335319080https://towardsdatascience.com/how-to-train-your-own-object-detector-with-tensorflows-object-detector-api-bec72ecfe1d9https://towardsdatascience.com/building-a-toy-detector-with…

WEB文件上传之JQuery ajaxfileupload插件使用(二)

1.JQuery ajaxfileupload插件使用准备 下载地址: http://www.phpletter.com/DOWNLOAD/ 2.原理分析 ajaxfileupload也是利用iframe实现无刷新异步提交,与我的上一篇文章(WEB文件上传之apache common upload使用(一)&…

Navicat安装激活

有条件的同学麻烦不要使用下面的激活步骤,仅供个人学习使用 。。。。。。 。。。。。。 。。。。。。 。。。。。。 一、去官网下载最新Navicat软件https://www.navicat.com.cn/download/navicat-premium 二、去下载激活脚本https://github.com/DoubleLabyrinth/nav…

WEB文件上传之apache common upload使用(一)

文件上传一个经常用到的功能,它有许多中实现的方案。 页面表单 RFC1897规范 http协议上传 页面控件(flash/html5/activeX/applet) RFC1897规范 http协议上传 页面控件(flash/html5/activeX/applet) 自定义数据规范 http协议上传 页面控件(flash/html5/act…

前端CSS学习笔记

一 CSS介绍 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(超文本标记语言)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语…

自律以自救

在一次逻辑思维的跨年晚会上,罗胖曾以「帝王」来形容活在当下移动互联网世界的人们。一个手机 App 可以让你足不出户,享受上百名厨师团队的服务,中饭想吃啥菜式、样品,输入框中一应俱全,光论规格,可能已超过…

Validform使用入门

Validform使用入门 1、引入css 请查看下载文件中的style.css,把里面Validform必须部分复制到你的css中(文件里这个注释 "/*以下部分是Validform必须的*/" 之后的部分是必须的)。之前发现有部分网友把整个style.css都引用在了页面…

Java爬取并下载酷狗音乐

本文方法及代码仅供学习,仅供学习。 案例: 下载酷狗TOP500歌曲,代码用到的代码库包含:Jsoup、HttpClient、fastJson等。 正文: 1、分析是否可以获取到TOP500歌单 打开酷狗首页,查看TOP500,发现存…

C 表達式及返回值

以下程序的输出结果是__A____。 #include<stdio.h> main() {int i10,j10;printf("%d,%d\n",i,j--); } A、11,10 B、9,10 C、010,9 D、10,9 8.若变量a、i已正确定义&#xff0c;且i已正确赋值&#xff0c;合法的语句是___B___。 A、a1 B、i; C、…

Webpack/Vue-cli两种方式加载markdown文件并实现代码高亮

准备的资源&#xff1a; highlight.js &#xff1a; 实现代码高亮&#xff0c;通过npm install highlight.js -D安装 vue-markdown-loader&#xff1a;解析md文件的必备loader&#xff0c;通过npm install vue-markdown-loader -D安装 下面我们分两个场景来说明一下md文件的…

新浪微博第三方登陆重定向错误23123

新浪微博第三方登陆重定向错误23123 2019年06月02日 13:49:43 温室花朵 阅读数&#xff1a;2更多 个人分类&#xff1a; 第三方微博登陆21323编辑当我们使用微博第三方登陆的时候&#xff0c;发现登陆出错了&#xff0c;错误码为&#xff1a;21323&#xff0c;解决方案如下&…

Utility Manager 的一些百度不了的操作

一进来是不是这样的&#xff01; 那突然出了点问题&#xff0c;咋办呢&#xff01; 就像这样子的&#xff0c; 恢复默认布局就OK啦&#xff01;哈哈哈&#xff0c;太聪明啦&#xff0c;但是百度了好长时间还是找不到啊&#xff0c;怎么办呐&#xff0c;烦死啦&#xff01; 其实…

Echart 5.0+版本报错Error in data(): “TypeError: Cannot read properties of undefined (reading ‘graphic‘)“

首先第一步需要检查echarts的导入方式&#xff0c;在5.0以后的版本&#xff0c;echarts做了比较大的调整&#xff0c;在vue中引入时必须使用如下命令 // import echarts from echarts 这种方式高版本不支持import * as echarts from echartsvue.prototype.$echarts echarts其次…