概述
內存洩漏:
內存洩漏是指在程序申請內存後, 那些被該回收的內存無法被系統回收. 內存洩漏的堆積, 最終會耗盡系統的所有內存
在c++中需要程序員手動釋放內存對象, 所以更容易存在內存洩漏. java中有自動回收機制, 即垃圾回收, 使得該問題得到了有效的改善, 但也時有可能發生內存洩漏的, 因為java gc判斷對象是否可以被回收使用的是可達性算法, 若一個對象已經無用, 但卻被其他有用對象所引用, 是不會進行回收的.
關於java虛擬機的垃圾回收可以看這篇文章:
內存溢出:
內存溢出是指程序在申請內存時, 沒有足夠的內存空間供其使用.
比如申請了一個int的內存, 要方long才能存下的值, 就會發生內存溢出.
比如說棧, 當棧滿時在執行入棧操作, 必然會發生內存溢出, 叫做上溢出, 棧空時執行出棧操作也會發生溢出, 叫做下溢出.
同時, 死循環遞歸等也易發生內存溢出.
閱讀更多 學習編程 的文章