在編程時進行動態內存分配是非常必要的。它可以在程序運行的過程中幫助分配所需的內存,而不是在進程啟動的時候就進行分配。然而,有效地管理這些內存同樣也是非常重要的。在大型的、復雜的應用程序中,內存泄漏是常見的問題。當以前分配的一片內存不再需要使用或無法訪問時,但是卻并沒有釋放它,那么對于該進程來說,會因此導致總可用內存的減少,這時就出現了內存泄漏。盡管優秀的編程實踐可以確保最少的泄漏,但是根據經驗,當使用大量的函數對相同的內存塊進行處理時,很可能會出現內存泄漏。尤其是在碰到錯誤路徑的情況下更是如此。 簡介
在計算機科學中,內存泄漏(memory leak)指由于疏忽或錯誤造成程序未能釋放已經不再使用的內存的情況。內存泄漏并非指內存在物理上的消失,而是應用程序分配某段內存后,由于設計錯誤,失去了對該段內存的控制,因而造成了內存的浪費。內存泄漏與許多其他問題有著相似的癥狀,并且通常情況下只能由那些可以獲得程序源代碼的程序員才可以分析出來。然而,有不少人習慣于把任何不需要的內存使用的增加描述為內存泄漏,嚴格意義上來說這是不準確的。 一般我們常說的內存泄漏是指堆內存的泄漏。堆內存是指程序從堆中分配的,大小任意的(內存塊的大小可以在程序運行期決定),使用完后必須顯式釋放的內存。應用程序一般使用malloc,calloc,realloc,new等函數從堆中分配到一塊內存,使用完后,程序必須負責相應的調用free或delete釋放該內存塊,否則,這塊內存就不能被再次使用,我們就說這塊內存泄漏了。 java -Xms100M -Xmx512M 設置最大512M,最小100M -----------------------------------------------------
Silence, the way to avoid many problems;
Smile, the way to solve many problems;