日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 怎么从性能上优化代码_月薪上万做好这一步:程序员职场中必须掌握的的Java代码性能优化技巧...

發布時間:2025/3/12 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 怎么从性能上优化代码_月薪上万做好这一步:程序员职场中必须掌握的的Java代码性能优化技巧... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

盡量指定類、方法的final修飾符

Java編譯器會尋找機會內聯所有的final方法,內聯對于提升Java運行效率作用重大,具體參見Java運行期優化。此舉大概能夠使性能平均提高50%。

盡量重用對象特別是String對象的使用,出現字符串連接時應該使用StringBuilder/StringBuffer代替。

盡可能使用局部變量

及時關閉流:進行數據庫連接、I/O流操作,在使用完畢后,及時關閉以釋放資源。

盡量減少對變量的重復計算:明確一個概念,對方法的調用,即使方法中只有一句語句,也是有消耗的,包括創建棧幀、調用方法時保護現場、調用方法完畢時恢復現場等。

盡量采用懶加載的策略,即在需要的時候才創建

慎用異常

異常對性能不利。拋出異常首先要創建一個新的對象,Throwable接口的構造函數調用名為fillInStackTrace()的本地同步方法,fillInStackTrace()方法檢查堆棧,收集調用跟蹤信息。只要有異常被拋出,Java虛擬機就必須調整調用堆棧,因為在處理過程中創建了一個新的對象。異常只能用于錯誤處理,不應該用來控制程序流程。

不要在循環中使用try…catch…,應該把其放在最外層

如果能估計到待添加的內容長度,為底層以數組方式實現的集合、工具類指定初始長度

當復制大量數據時,使用System.arraycopy()命令

乘法和除法使用移位操作:移位操作雖然快,但是可能會使代碼不太好理解,因此最好加上相應的注釋。

循環內不要不斷創建對象引用

基于效率和類型檢查的考慮,應該盡可能使用array,無法確定數組大小時才使用ArrayList

盡量使用HashMap、ArrayList、StringBuilder,除非線程安全需要,否則不推薦使用Hashtable、Vector、StringBuffer,后三者由于使用同步機制而導致了性能開銷

不要將數組聲明為public static final

盡量在合適的場合使用單例

使用單例可以減輕加載的負擔、縮短加載的時間、提高加載的效率,但并不是所有地方都適用于單例,簡單來說,單例主要適用于以下三個方面:

(1)控制資源的使用,通過線程同步來控制資源的并發訪問

(2)控制實例的產生,以達到節約資源的目的

(3)控制數據的共享,在不建立直接關聯的條件下,讓多個不相關的進程或線程之間實現通信

盡量避免隨意使用靜態變量

要知道,當某個對象被定義為static的變量所引用,那么gc通常是不會回收這個對象所占有的堆內存的

及時清除不再需要的會話

實現RandomAccess接口的集合比如ArrayList,應當使用最普通的for循環而不是foreach循環來遍歷

使用同步代碼塊替代同步方法

將常量聲明為static final,并以大寫命名

這樣在編譯期間就可以把這些內容放入常量池中,避免運行期間計算生成常量的值。另外,將常量的名字以大寫命名也可以方便區分出常量與變量

不要創建一些不使用的對象,不要導入一些不使用的類

程序運行過程中避免使用反射

反射是Java提供給用戶一個很強大的功能,功能強大往往意味著效率不高。不建議在程序運行過程中使用尤其是頻繁使用反射機制

使用數據庫連接池和線程池

使用帶緩沖的輸入輸出流進行IO操作,這可以極大地提升IO效率

順序插入和隨機訪問比較多的場景使用ArrayList,元素刪除和中間插入比較多的場景使用LinkedList

不要讓public方法中有太多的形參

public方法即對外提供的方法,如果給這些方法太多形參的話主要有兩點壞處:

1、違反了面向對象的編程思想,Java講求一切都是對象,太多的形參,和面向對象的編程思想并不契合

2、參數太多勢必導致方法調用的出錯概率增加

字符串變量和字符串常量equals的時候將字符串常量寫在前面,可以避免空指針異常

請知道,在java中if (i == 1)和if (1 == i)是沒有區別的,但從閱讀習慣上講,建議使用前者

不要對數組使用toString()方法

不要對超出范圍的基本數據類型做向下強制轉型

公用的集合類中不使用的數據一定要及時remove掉

把一個基本數據類型轉為字符串,基本數據類型.toString()是最快的方式、String.valueOf(數據)次之、數據+””最慢

使用最有效率的方式去遍歷Map

對資源的close()建議分開操作

總結

以上是生活随笔為你收集整理的java 怎么从性能上优化代码_月薪上万做好这一步:程序员职场中必须掌握的的Java代码性能优化技巧...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。