官术网_书友最值得收藏!

4.9.4 開發中容易造成內存泄露的操作

在實際開發中,經常會遇到程序造成系統崩潰的現象。如下這些操作應該注意其使用場景。大家在學完相關內容后,再溫習下面的內容,此時不要求掌握相關細節。

4種最容易造成內存泄露的情況如下。

1.創建大量無用對象

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

        String str="";
for (int i=0; i < 10000; i++) {
          str += i;     //相當于產生了10000個String對象
        }

2.靜態集合類的使用

像HashMap、Vector、List等最容易出現內存泄露的問題。這些靜態變量的生命周期和應用程序一致,所有的對象Object也不能被釋放。

3.各種連接對象(I/O流對象、數據庫連接對象、網絡連接對象)未關閉

I/O流對象、數據庫連接對象、網絡連接對象等連接對象屬于物理連接,它們和硬盤或者網絡連接,不使用的時候一定要關閉。

4.監聽器的使用

釋放對象時,沒有刪除相應的監聽器。

要點

■ 程序員無權調用垃圾回收器。

■ 程序員可以調用System.gc( ),該方法只是通知JVM,而不是運行垃圾回收器。應該盡量少用,因為會申請啟動Full GC,成本高,影響系統性能。

■ finalize方法,是Java提供給程序員用來釋放對象或資源的方法,但應盡量少用。

主站蜘蛛池模板: 凤城市| 东至县| 太仓市| 河池市| 张家界市| 盐边县| 南陵县| 高雄县| 沙湾县| 十堰市| 洪洞县| 钦州市| 阿克苏市| 施秉县| 安溪县| 白河县| 平和县| 万源市| 潼关县| 新巴尔虎右旗| 鞍山市| 奉新县| 屏山县| 姚安县| 东丰县| 诏安县| 高安市| 招远市| 南丹县| 陆川县| 枣庄市| 南靖县| 崇仁县| 奈曼旗| 长寿区| 彰化县| 吴旗县| 习水县| 普定县| 蒙阴县| 北辰区|