1. 程式人生 > >開發中容易造成記憶體洩露的操作

開發中容易造成記憶體洩露的操作

建議:

  1. 在實際開發中,經常會造成系統的崩潰。如下這些操作我們應該注意這些使用場景。 請大家學完相關內容後,回頭過來溫習下面的內容。不要求此處掌握相關細節。

  如下四種情況時最容易造成記憶體洩露的場景,請大家開發時一定注意:

  · 建立大量無用物件

  比如,我們在需要大量拼接字串時,使用了String而不是StringBuilder。

1

2

3

4

String str = "";

for (int i = 0; i < 10000; i++) {   

    str += i;     //相當於產生了10000個String物件

}

  · 靜態集合類的使用

  像HashMap、Vector、List等的使用最容易出現記憶體洩露,這些靜態變數的生命週期和應用程式一致,所有的物件Object也不能被釋放。

  · 各種連線物件(IO流物件、資料庫連線物件、網路連線物件)未關閉

  IO流物件、資料庫連線物件、網路連線物件等連線物件屬於物理連線,和硬碟或者網路連線,不使用的時候一定要關閉。

  · 監聽器的使用

  釋放物件時,沒有刪除相應的監聽器。

要點:

  1. 程式設計師無權呼叫垃圾回收器。

  2. 程式設計師可以呼叫System.gc(),該方法只是通知JVM,並不是執行垃圾回收器。儘量少用,會申請啟動Full GC,成本高,影響系統性能。

  3. finalize方法,是Java提供給程式設計師用來釋放物件或資源的方法,但是儘量少用。