測者的測試技術手冊:揭開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.pswp.cn/news/248835.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248835.shtml
英文地址,請注明出處:http://en.pswp.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其次…