開發中容易造成記憶體洩露的操作
阿新 • • 發佈:2019-01-09
建議:
1. 在實際開發中,經常會造成系統的崩潰。如下這些操作我們應該注意這些使用場景。 請大家學完相關內容後,回頭過來溫習下面的內容。不要求此處掌握相關細節。
如下四種情況時最容易造成記憶體洩露的場景,請大家開發時一定注意:
· 建立大量無用物件
比如,我們在需要大量拼接字串時,使用了String而不是StringBuilder。
1 2 3 4 |
|
· 靜態集合類的使用
像HashMap、Vector、List等的使用最容易出現記憶體洩露,這些靜態變數的生命週期和應用程式一致,所有的物件Object也不能被釋放。
· 各種連線物件(IO流物件、資料庫連線物件、網路連線物件)未關閉
IO流物件、資料庫連線物件、網路連線物件等連線物件屬於物理連線,和硬碟或者網路連線,不使用的時候一定要關閉。
· 監聽器的使用
釋放物件時,沒有刪除相應的監聽器。
要點:
1. 程式設計師無權呼叫垃圾回收器。
2. 程式設計師可以呼叫System.gc(),該方法只是通知JVM,並不是執行垃圾回收器。儘量少用,會申請啟動Full GC,成本高,影響系統性能。
3. finalize方法,是Java提供給程式設計師用來釋放物件或資源的方法,但是儘量少用。