java中內存泄漏和內存溢出指什么呢?


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

java中內存泄漏和內存溢出指什么呢? 下文筆者講述java中常見的內存泄漏和內存溢出的相關簡介說明,如下所示:

內存泄漏

內存泄漏是指對象實例在新建和使用完畢后 仍然被引用,沒能被垃圾回收釋放,一直積累, 直到沒有剩余內存可用 當存在內存泄露時,我們需找出泄露的對象是怎么被GC ROOT引用起來 然后通過引用鏈來具體分析泄露的原因 分析內存泄漏的工具有:Jprofiler,visualvm等。 

內存溢出

內存溢出是指當我們新建一個實例對象時,
實例對象所需占用的內存空間大於堆的可用空間。
棧(JVM Stack)存放主要是棧幀( 局部變量表, 操作數棧 , 動態鏈接 , 方法出口信息 )的地方。
注意區分棧和棧幀:
棧里包含棧幀。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM