- 實戰Java程序設計
- 北京尚學堂科技有限公司
- 447字
- 2019-10-16 10:45:29
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提供給程序員用來釋放對象或資源的方法,但應盡量少用。
推薦閱讀
- Mastering OpenCV Android Application Programming
- Apache Spark 2.x Machine Learning Cookbook
- Interactive Data Visualization with Python
- SAS數據統計分析與編程實踐
- R的極客理想:工具篇
- Learning OpenStack Networking(Neutron)
- Learning Apache Cassandra
- Java高并發核心編程(卷1):NIO、Netty、Redis、ZooKeeper
- Julia for Data Science
- Practical Game Design with Unity and Playmaker
- HoloLens與混合現實開發
- 編程可以很簡單
- JSP程序設計與案例實戰(慕課版)
- Visual C++從入門到精通(第2版)
- Neo4j 3.x入門經典