听我一句劝好吗?放下那些老掉牙的性能优化笔记吧!又不是没有新的,跟不上时代的学了也没法直接用呀!
性能概述
公司投入人力物力成本開發出的程序,如果出現程序癱瘓、界面停頓、抖動、響應遲緩等問題,會大大降低用戶體驗,損失大量用戶。對于上述問題,都是需要性能調優來解決的問題。
程序性能主要表現在代碼的執行速度、軟件系統的內存分配是否合理、代碼的啟動加載時間是否夠長、軟件系統的負載承受能力是否足夠等方面。
常見的系統瓶頸如下:
磁盤I/O:磁盤io讀寫速度遠小于內存讀寫,低效的磁盤io會拖垮整個系統。
網絡傳輸:代碼需要對互聯網上的數據進行讀寫,由于網絡環境的不確定性,網絡讀寫的速度較慢也會成為系統性能瓶頸。
CPU資源搶占:系統中存在科學計算、3d渲染等對cpu資源長期占用的操作,也會造成其他操作cpu資源搶占時的性能問題。
異常捕獲:異常捕獲和處理較為消耗資源,程序中過多捕獲異常也會造成性能問題
數據庫操作:大部分系統需要數據庫讀寫查詢,如果數據讀寫耗時較長也會拖死整個系統。
高并發場景下的鎖競爭:在高并發場景下,為了防止并發問題時常需要加鎖,在鎖資源搶占時,會造成系統的性能問題。
系統內存的分配:內存和磁盤的比例要合理,內存過小也會成為系統讀寫
的瓶頸。
對于很多剛剛入門學習Java的學員而言,如何更好的學習到Java的相關理論知識很重要。除了多打代碼之外,那么掌握一些簡單有效的Java性能優化小技巧,不僅僅有利于更好的運用Java編程語言,同時還能提高程序性能!
今天小編就來分享一份Alibaba內部的720頁Java程序性能優化實戰手冊,上線之后大獲好評!當時看完這份資料的時候,感到首先就Java的方方面面講得比較全,但是不亂。而且每個點都講得比較清楚,讀下來也沒有什么盲點。干貨非常多。國內少有的能寫得這么好的。我看了收獲很多。
核心內容
把細節打磨得極其突出
以前我以為寫的代碼要崩潰是件挺困難的事情,但是現在發現貌似系統癱瘓也挺常見的……
當遇到系統癱瘓,所做的辦法也不過是通過Linux命令查找線上環境的性能指標,查看dump日志,然后查代碼,最后定位問題。看起來是一個很簡單的步驟,但是這里每一步都考驗著基礎和功底。
我以為,要想做好Java性能調優,有幾點是很重要的。
第一,是計算機相關的基礎要足夠扎實。我們需要熟悉計算機組成原理、操作系統、數據庫等等基礎知識。這樣才有可能在紛繁復雜的系統中找到調優的點。
其次,要透過源碼來熟悉技術的本質。我經常覺得,只通過技術論壇上學到的技術是不夠的,那些都是生產者消化后總結的知識點。我們需要去深入源碼,自己去分析學習和總結,這樣才能更客觀地學習一項技術,而且還要能通過源碼來學習別人的思維方式。
最后,則是要善于總結。使用一項技術,不能僅僅停留在“可以用”“好用”等方面,而是要善于去追問:為什么要使用,使用對系統性能有什么提升?和其他的技術對比好處在哪?其原理又是什么?唯有在理解這些問題之后,才能在遇到性能問題的時候,及時地想到解決方案。
總結
以上是生活随笔為你收集整理的听我一句劝好吗?放下那些老掉牙的性能优化笔记吧!又不是没有新的,跟不上时代的学了也没法直接用呀!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欢聚时代2015校招 一面
- 下一篇: 当下互联网行业中,哪些职位比较好?看看字