1. 程式人生 > 其它 >java中記憶體洩漏和記憶體溢位指什麼呢?

java中記憶體洩漏和記憶體溢位指什麼呢?

轉自:http://www.java265.com/JavaMianJing/202110/16349105381543.html

java中記憶體洩漏和記憶體溢位指什麼呢? 下文筆者講述java中常見的記憶體洩漏和記憶體溢位的相關簡介說明,如下所示:

記憶體洩漏

記憶體洩漏是指物件例項在新建和使用完畢後
 仍然被引用,沒能被垃圾回收釋放,一直積累,
 直到沒有剩餘記憶體可用
當存在記憶體洩露時,我們需找出洩露的物件是怎麼被GC ROOT引用起來
然後通過引用鏈來具體分析洩露的原因
分析記憶體洩漏的工具有:Jprofiler,visualvm等。

記憶體溢位

記憶體溢位是指當我們新建一個例項物件時,
例項物件所需佔用的記憶體空間大於堆的可用空間。
棧(JVM Stack)存放主要是棧幀( 區域性變量表, 運算元棧 , 動態連結 , 方法出口資訊 )的地方。
注意區分棧和棧幀:
棧裡包含棧幀。

與執行緒棧相關的記憶體異常有兩個:
1.StackOverflowError(方法呼叫層次太深,記憶體不夠新建棧幀)
2.OutOfMemoryError(執行緒太多,記憶體不夠新建執行緒)
 當出現了記憶體溢位問題,
  這種情況通常是程式執行所需的記憶體大於了我們給jvm虛擬機器配置的記憶體
  這種情況下,我們可以採用調大-Xmx來解決這種問題
例: 定義幾十個超級大的字串,此時將會直接導致記憶體溢位